Toon posts:

Meerdere domeinen afhandelen verschillende content zien

Pagina: 1
Acties:

Vraag


  • RobbyTown
  • Registratie: April 2007
  • Niet online
Onderwerp werd te lang, betreft dus PHP

Nu kan ik wel iets van php maar ik vraag mij af als het nog korter en beter kan.

Het gaat om het volgende verschillende domeintjes komen op hetzelfde uit maar moeten eigenlijk verschillende content laten zien zonder forward.

Normaal zou virtualhost een/de oplossing zijn maar dat is niet de bedoeling ik wil het via php afhandelen.

Momenteel heb ik dit, ik vraag mij af als het netter en beter kan. Voorbeeld www heb ik er nu ook bij getypt anders werkt het niet als je met www naar het domein gaat. Is dit de kortste code of kan het nog korter?

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<?php 
$domain = $_SERVER['HTTP_HOST'];
if ($domain == "mijnip-tje.nl" || $domain == "www.mijnip-tje.nl") 
{
 echo $_SERVER['REMOTE_ADDR']; ?>
<?php } else if ($domain == "fanvantweakers.nl" || $domain == "www.fanvantweakers.nl") { ?>
Hey hallo! Ik ben fan van Tweakers jij ook?
<?php } else if ($domain == "vorkje.nl" || $domain == "www.vorkje.nl") { ?>
<img border="0" src="vorkje.jpg" />
<?php
}
?>

Mijn blog - T.net nostalgie - Tweak uptime

Beste antwoord (via RobbyTown op 13-02-2021 09:25)


  • Mr. HTTP
  • Registratie: November 2020
  • Laatst online: 09-03-2022
Switch statement gebruiken en per applicatie endpoint (switch context met 1 of meerdere domeinnamen) een $applicatie_id toewijzen en dat hergebruiken zodat je non-matches kan afvangen en niet met templating bezig bent tussen je logic. Snappen dat de Host header field (HTTP_HOST) niet altijd alleen een domeinnaam hoeft te zijn aangezien de syntax
code:
1
 host[:port]
* is. De Host header field kan ook worden weggelaten wat in bijv. nginx dan wordt opgepikt door de default server.
Daarom de port syntax vroegtijdig wegfilteren (of valideren en splitten op :), host waarde eventueel lowercase maken voor de vage requests aangezien host case-insensitive is... Regex gebruiken is niet nodig, string compares zijn goedkoper en je wilt meestal in je domain routing logic heel concreet zijn over wat een entrypoint is en wat niet.
Beter ook niet $_SERVER direct aanspreken maar filter_input gebruiken.

Volgens mij heb ik zo alles gehad ;)
Dus nee het kan niet korter, wel beter... (of gewoon een framework gebruiken)

*
code:
1
host = ipv4 | [ipv6] | domain name | host name

[Voor 62% gewijzigd door Mr. HTTP op 11-02-2021 22:01]

Alle reacties


  • Daos
  • Registratie: Oktober 2004
  • Niet online
Je kan in php elseif aan elkaar vast schrijven :+

  • Webgnome
  • Registratie: Maart 2001
  • Nu online
waarom wil je dit in php regelen? Je zou een regex kunnen gebruiken om die www. eruit te halen maar of het daar korter van word?

[Voor 59% gewijzigd door Webgnome op 11-02-2021 21:36]

Strava, Twitter


Acties:
  • Beste antwoord
  • 0Henk 'm!

  • Mr. HTTP
  • Registratie: November 2020
  • Laatst online: 09-03-2022
Switch statement gebruiken en per applicatie endpoint (switch context met 1 of meerdere domeinnamen) een $applicatie_id toewijzen en dat hergebruiken zodat je non-matches kan afvangen en niet met templating bezig bent tussen je logic. Snappen dat de Host header field (HTTP_HOST) niet altijd alleen een domeinnaam hoeft te zijn aangezien de syntax
code:
1
 host[:port]
* is. De Host header field kan ook worden weggelaten wat in bijv. nginx dan wordt opgepikt door de default server.
Daarom de port syntax vroegtijdig wegfilteren (of valideren en splitten op :), host waarde eventueel lowercase maken voor de vage requests aangezien host case-insensitive is... Regex gebruiken is niet nodig, string compares zijn goedkoper en je wilt meestal in je domain routing logic heel concreet zijn over wat een entrypoint is en wat niet.
Beter ook niet $_SERVER direct aanspreken maar filter_input gebruiken.

Volgens mij heb ik zo alles gehad ;)
Dus nee het kan niet korter, wel beter... (of gewoon een framework gebruiken)

*
code:
1
host = ipv4 | [ipv6] | domain name | host name

[Voor 62% gewijzigd door Mr. HTTP op 11-02-2021 22:01]


  • RobIII
  • Registratie: December 2001
  • Nu online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Waarom doe je dit überhaupt in PHP en niet in je webserver (Apache/NGinx/...) of in je rewrite rules?

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Roses are red Violets are blue, Unexpected ‘{‘ on line 32.

Over mij


  • Webgnome
  • Registratie: Maart 2001
  • Nu online
omdat het kan? denk ik ..

Strava, Twitter


  • RobbyTown
  • Registratie: April 2007
  • Niet online
Omdat ik een beetje kennis heb van PHP en het niet al te complex moet gaan worden zo kort en simpel mogelijk zonder server config aanpassingen. Liefst in 1 file en omdat het kan.

Had gevonden dat het ook rewrite kon maar dan krijg ik meerdere bestanden. Dat wil ik nou net niet. Dus daarom het zou in PHP moeten kunnen.
https://stackoverflow.com...g-pages-on-another-domain

Mijn blog - T.net nostalgie - Tweak uptime


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 24-03 16:10

Janoz

Moderator Devschuur®

!litemod

Wat is je aversie tegen meerdere bestanden? Zou ik je originele voorstel omzetten dan zou je van:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<?php 
$domain = $_SERVER['HTTP_HOST'];
if ($domain == "mijnip-tje.nl" || $domain == "www.mijnip-tje.nl") 
{
 echo $_SERVER['REMOTE_ADDR']; ?>
<?php } else if ($domain == "fanvantweakers.nl" || $domain == "www.fanvantweakers.nl") { ?>
Hey hallo! Ik ben fan van Tweakers jij ook?
<?php } else if ($domain == "vorkje.nl" || $domain == "www.vorkje.nl") { ?>
<img border="0" src="vorkje.jpg" />
<?php
}
?>

Naar
code:
1
Hey hallo! Ik ben fan van Tweakers jij ook?

en
code:
1
<img border="0" src="vorkje.jpg" />

en een stukje serverconfig.

Persoonlijk vind ik meerdere bestanden, waarbij elk hun eigen doel heeft, een stuk duidelijker dan alle 3 de doelen verweven in 1 bestand. Maar ik vermoed dat het voorbeeldje niet representatrief is.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Webgnome
  • Registratie: Maart 2001
  • Nu online
@Janoz daarboven komt ook nog dat het nu om 2 domeinen gaat. Wat nu als het om 10 , 20 , 30 of misschien zelfs 100 domeinen gaat? Ga je die allemaal met de hand in dat bestandje zetten? Of doe je een copy / past van een originele config en pas je die file aan.

Anyways , ik denk dat de vraag van de TS wel beantwoord is. Je kunt het op veel manieren oplossen maar de manier die in de TS staat zit al redelijk dicht tegen 'de juiste' manier aan als je het via PHP wil doen

[Voor 28% gewijzigd door Webgnome op 12-02-2021 09:33]

Strava, Twitter

Pagina: 1


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee