it-swarm.com.de

Die SetEnv-Direktive funktioniert nicht für localhost VirtualHost, aber für andere VirtualHost

Ich habe zwei virtuelle Hosts deklariert: localhost und test.

Beide verwenden die Direktive SetEnv und verweisen auf denselben DocumentRoot:

NameVirtualHost *:80

<VirtualHost _default_:80>
    DocumentRoot "/Users/mf/Sites/test"
    SetEnv FROM_ROOT 'i like tacos'             ## <- SetEnv
</VirtualHost>

<VirtualHost *:80>
    ServerName localhost    
    DocumentRoot "/Users/mf/Sites/test"
    <Directory "/Users/mf/Sites/test">
        Options Includes FollowSymLinks  
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
    SetEnv FROM_VHOST 'set in localhost vhost'  ## <- SetEnv
</VirtualHost>

<VirtualHost *:80>
    ServerName test
    DocumentRoot "/Users/mf/Sites/test"
    <Directory "/Users/mf/Sites/test">
        Options Includes FollowSymLinks  
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
    SetEnv FROM_VHOST 'set in test vhost'        ## <- SetEnv
</VirtualHost>

Ich habe eine Testdatei / Users/mf/Sites/test/dump.php:

var_dump( $_SERVER );

Für http://test/ funktioniert alles wie erwartet, $_SERVER['FROM_VHOST'] ist verfügbar. dump.php gibt aus:

array (size=33)
  'UNIQUE_ID' => string 'UY7bHMCoAXIAABkbAkMAAAAC' (length=24)
  'FROM_VHOST' => string 'set in test vhost' (length=17)
  'HTTP_Host' => string 'test' (length=4)
…

Bei http://localhost/ geht es schief:

array (size=34)
  'UNIQUE_ID' => string 'UY7bA8CoAXIAABkZAhQAAAAA' (length=24)
  'FROM_ROOT' => string 'i like tacos' (length=5)
  'HTTP_Host' => string 'localhost' (length=9)
…

?

  1. Warum hat localhost keine Umgebungsvariable FROM_VHOST?
  2. Warum sieht nur localhost die Umgebungsvariable FROM_ROOT?
2
Mark Fox

Einige Dinge zum Ausprobieren:

1) Dies könnte daran liegen, dass Sie localhost als Hostnamen eingerichtet haben, was wahrscheinlich das Standard auslösen würde, checken Sie in/etc/hostname ein oder verwenden Sie optional einen FQDN wie web.localhost

2) Eine andere Sache, die Sie versuchen sollten, ist, Standard nach unten anstatt nach oben zu setzen, wenn die höheren Prioritäten höher sind.

3) Offensichtliche Fehlerbehebung benutze localhost nicht als vhost :)

Ich bin nicht sehr zuversichtlich mit meiner Antwort, aber probiere es aus (ich werde es noch einmal überprüfen, wenn ich mehr Zeit habe)

2
Simon Hayter