XAMPP met meerdere sites / en / met absolute url-links

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Henk Frigge

Henk Frigge

23/03/2018 12:40:09
Quote Anchor link
Ik heb XAMPP op mijn pc geinstalleerd en ook nog aan de gang gekregen. Echter, ik zit met twee probleempjes. Het eerste probleem is dat ik binnen mijn website nogal wat absolute links heb staan. Wanneer je dan je website gaat testen op je pc, dan gaat hij direct wanneer je op zo'n link klikt naar de URL op het net in plaats van de vergelijkbare pagina op je pc. En dat is nou precies wat je niet wilt. Dan moet je de absolute links relatief maken sukkel, zou je zeggen. Dat dacht ik dus ook, maar dan heb ik een ander probleem. Ik heb namelijk meerdere websites die ik lokaal wil opbouwen en testen voordat ik dat allemaal live maak op het net. Die sites heb ik netjes in eigen mapjes in de HTDOCS map geplaatst. Dus ik heb:

HTDOCS\Website1
HTDOCS\Website2
HTDOCS\WebsiteN

Dus de absolute link http://www.website1.nl/mapjeopwebsite1/bestandje.php heb ik veranderd in de relatieve link /website1.nl/mapjeopwebsite1/bestandje.php en dan kan ik hem wel testen op mijn pc. Echter, wanneer ik hem dan live maak op het net, dan maakt hij van die relatieve link /website1.nl/website1.nl/mapjeopwebsite1/bestandje.php, doordat je je op dat moment al in website1.nl bevindt.

Iemand een suggestie om dit op te lossen?
 
PHP hulp

PHP hulp

23/04/2024 12:09:44
 
Ward van der Put
Moderator

Ward van der Put

23/03/2018 13:20:30
Quote Anchor link
Definieer een constante voor de root ergens in je globale configuratie. Die is dan lokaal bijvoorbeeld de string 'http://www.website1.nl/mapjeopwebsite1/' en remote 'https://www.example.com/'.
 
Thomas van den Heuvel

Thomas van den Heuvel

23/03/2018 13:22:35
Quote Anchor link
De beste oplossing Een uitgebreide oplossing is als volgt.

Allereerst, en meest belangrijk, is waarschijnlijk dat je een soort van linkfunctie1 gaat gebruiken binnen deze sites. Deze kun je dan opbouwen aan de hand van configuratie. Hiermee kun je dan ook een domein instellen. Ik zou je ook zeker aanraden om complete/absolute URL's te gaan/blijven gebruiken. Met relatieve URL's blijft er ruimte open voor interpretatie.

Doordat je gebruik maakt van een linkfunctie voor (alle) interne links houd je je site(s) portabel. Ook hoef je wijzigingen maar op één plek door te voeren. En als je zorgt dat je domeinspecifieke configuratie hebt (maak een switch-statement op grond van bijvoorbeeld $_SERVER['SERVER_NAME']) dan hoef je alles maar 1x in te stellen en heb je hier verder geen omkijken naar.

En ten tweede: maak virtuele hosts aan, zodat je je sites lokaal kunt onderscheiden. Dit is vrij eenvoudig in Apache. Je maakt een regel aan in een Apache-config-bestand, en je past je hosts-bestand aan in Windows om de mapping IP -> virtuele host te maken.

Je kunt je lokale sites dan bijvoorbeeld "site-one.lan" of "site-one.test" of "site-one.local" noemen (en zo ook voor site-two etc.) of hoe je ze ook wilt noemen.

1: Met linkfunctie bedoel ik een functie die op grond van parameters en configuratie een volledige hyperlink (interne link) genereert.

EDIT: wat @Ward hierboven voorstelt is ook zinnig, maar is eigenlijk een apart onderwerp: dit is de "root van je applicatie-pad (je website)" maar ik zou dit persoonlijk niet op één hoop gooien met het domein.
Gewijzigd op 23/03/2018 13:30:27 door Thomas van den Heuvel
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.