[Apache] Vhost; DocumentRoot veranderen als domein

Pagina: 1
Acties:
  • 148 views sinds 30-01-2008
  • Reageer

  • MrOizo2005
  • Registratie: September 2003
  • Laatst online: 30-01 10:33
Beste tweakers,

Lokaal gaan we een server opzetten die we gaan gebruiken als test webserver, echter stuit ik nu op een probleem. Ik heb via Windows 2003 een A Record en een Cname aangemaakt die alles met *.domeinnaam.local opvangt en doorstuurd naar een linux webserver. Dit werkt allemaal prima op 1 punt na. Op de linux server heb ik in apache een virtualhost aangemaakt die alles opvangt, dit gaat allemaal prima en zet de gebruiker ook in de juiste map.

voorbeeld
gebruiker tikt in testomgeving.domein.local dan komt deze terecht in de map /var/www/html/testomgeving en deze map word ook getoont.

Maar als ik dan ga kijken dan staat de DocumentRoot op /var/www/html en deze moet dus ook aangepast worden naar de goede documentroot.

Ik heb nu dit als tekst in me apache config file.

code:
1
2
3
4
5
6
7
8
9
10
<VirtualHost *:80>
        ServerAdmin oizo@domein.local
        ServerAlias *.domein.local
        DocumentRoot /var/www/html/
        VirtualDocumentRoot /var/www/html/%1
        <Directory />
                Options FollowSymLinks
                AllowOverride none
        </Directory>
</VirtualHost>


Hoe kan ik dit aanpassen zodat de DocumentRoot per subdomain ook aangepast word? een hele simpele oplossing "DocumentRoot /var/www/html/%1" werkt niet.

Also known as Oizopower | When Life Gives You Questions, Google has Answers


Verwijderd

Dit werkt niet!

de $_SERVER['DOCUMENT_ROOT'] variable is een onbetrouw om te bepalen waar je DocumentRoot is!

Ik heb dit ook al eens uitgezocht en alle Apache devs zeggen dit!

  • MrOizo2005
  • Registratie: September 2003
  • Laatst online: 30-01 10:33
Yup al bekeken, hetgeen waar ik me info ook vandaan haalde was:
http://httpd.apache.org/docs/2.0/mod/mod_vhost_alias.html

maar hier word nooit de echte document root gezet.
Verwijderd schreef op dinsdag 13 november 2007 @ 10:57:
Dit werkt niet!

de $_SERVER['DOCUMENT_ROOT'] variable is een onbetrouw om te bepalen waar je DocumentRoot is!

Ik heb dit ook al eens uitgezocht en alle Apache devs zeggen dit!
Als ik test.domein.local doe dat kom ik in de /var/www/html/test terecht maar echter als ik doorklik dan moet hij de document root op /var/www/html/test zetten.

test.domein.local/admin werkt dan niet omdat hij zoekt in /var/www/html/admin en dat moet dus zijn /var/www/html/test/admin

[ Voor 23% gewijzigd door MrOizo2005 op 13-11-2007 11:31 ]

Also known as Oizopower | When Life Gives You Questions, Google has Answers


Verwijderd

Ik zeg toch je moet de DOCUMENT_ROOT var niet gebruiken

  • MrOizo2005
  • Registratie: September 2003
  • Laatst online: 30-01 10:33
Verwijderd schreef op dinsdag 13 november 2007 @ 11:20:
Ik zeg toch je moet de DOCUMENT_ROOT var niet gebruiken
Heb je ook een andere oplossing dan? want elke website heeft een DocumentRoot nodig.
En de PHP scripts die op het test omgeving komen kunnen niet veranderd worden.

en de $_SERVER['DOCUMENT_ROOT'] leest alleen uit wat er in je config gezet is.

[ Voor 23% gewijzigd door MrOizo2005 op 13-11-2007 11:23 ]

Also known as Oizopower | When Life Gives You Questions, Google has Answers


  • Sypher
  • Registratie: Oktober 2002
  • Laatst online: 11:43
Voor zoiets is VirtualDocumentRoot de oplossing :)
Dit werkt zeer goed.

Waarom werkt jouw genoemde configuratie niet naar behoren?

[ Voor 30% gewijzigd door Sypher op 13-11-2007 11:26 ]


  • MrOizo2005
  • Registratie: September 2003
  • Laatst online: 30-01 10:33
Sypher schreef op dinsdag 13 november 2007 @ 11:25:
Voor zoiets is VirtualDocumentRoot de oplossing :)
Dit werkt zeer goed
Die heb ik er al instaan , alleen als ik de echte DocumentRoot weghaal uit de VirtualHost gedeelte in de website dan werkt het niet

Waarom het niet werkt is omdat bepaalde PHP applicaties het vanaf de document root berekenen.
zie hieronder
Als ik test.domein.local doe dat kom ik in de /var/www/html/test terecht maar echter als ik doorklik dan moet hij de document root op /var/www/html/test zetten.

test.domein.local/admin werkt dan niet omdat hij zoekt in /var/www/html/admin en dat moet dus zijn /var/www/html/test/admin

[ Voor 44% gewijzigd door MrOizo2005 op 13-11-2007 11:30 ]

Also known as Oizopower | When Life Gives You Questions, Google has Answers


Verwijderd

MrOizo2005 schreef op dinsdag 13 november 2007 @ 11:27:
[...]


Die heb ik er al instaan , alleen als ik de echte DocumentRoot weghaal uit de VirtualHost gedeelte in de website dan werkt het niet

Waarom het niet werkt is omdat bepaalde PHP applicaties het vanaf de document root berekenen.
zie hieronder


[...]
heb je ook 'UseCanonicalName Off' toegevoegd zoals in de documentatie staat?

  • MrOizo2005
  • Registratie: September 2003
  • Laatst online: 30-01 10:33
Verwijderd schreef op dinsdag 13 november 2007 @ 11:36:
[...]

heb je ook 'UseCanonicalName Off' toegevoegd zoals in de documentatie staat?
Ja die heb ik ertussen gezet.
Ik zal nog even een voorbeeld geven hoe ik het bedoel.

- ik bezoek een domein naar genaamd "test.domein.local"
- Apache gebruikt nu de VirtualDocumentRoot en gaat naar /var/www/html/test dat gaat dus goed
- maar PHP geeft tijden het printen van de $_SERVER var het volgende aan:
- [DOCUMENT_ROOT] => /var/www/html/ dit zou dus ook veranderd moeten worden. dus dat je de DocumentRoot zeg maar locked per subdomain.

Nu vraag ik me echter af of het wel dynamisch kan. Als ik nml naar plesk kijk die maakt per subdomein ook echte losse vhost bestanden aan die periodiek geupdate worden

Also known as Oizopower | When Life Gives You Questions, Google has Answers


  • Sypher
  • Registratie: Oktober 2002
  • Laatst online: 11:43
Dat PHP dat aangeeft dat klopt. Je bent niet de enige die er last van heeft.

Verwijderd

De $SERVER['DOCUMENT_ROOT'] is NIET betrouwbaar. Gebruik deze dus niet om de docroot te bepalen!

Je kunt het beste een config maken die de docroot zet.

Je kunt ook iets maken met mod_rewrite die dan de DOCUMENT_ROOT zet maar hierover moet je even google raadplegen

eerste hit van de link hierboven heeft een rewrite oplossing

RewriteEngine on
RewriteRule ^(.*).$ $1 [env=DOCUMENT_ROOT:/home/caleacorecta/blablabla]

Je moet alleen blabalabalabl vervangen door de www. of test. of iets dergelijks

Moet deze topic niet naar Server-software? Aangezien apache niet echt linux specifiek is

[ Voor 39% gewijzigd door Verwijderd op 13-11-2007 12:34 ]

Pagina: 1