2012-03-26 13 views
0

Ich habe example.org und foo.example.org in das gleiche Verzeichnis zeigen, /var/www/html/ und wollen foo.example.org intern zu /var/www/foo/ mit nur mod_rewrite zu umleiten. Dieseintern umleiten zu höheren Verzeichnis

ist das, was ich bisher, aber keine Freude:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{HTTP_HOST} ^foo [NC] 
    RewriteRule ^(.*)$ ../foo/$1 [L] 
</IfModule> 

Dies bringt mir 500s aufgrund der Grenze von 10 internen Umleitungen schlagen, aber ich verstehe nicht, warum.

Antwort

0

Der Grund für die interne Umleitungsschleife ist, dass Ihr einziger RewriteCond die Überprüfung des Hostnamens ist. Der Hostname ändert sich nicht nach der internen Weiterleitung und wird leider ausgelöst, wenn die Regeln für die neue Anfrage analysiert werden. Sie können dies lösen, indem Sie einen RewriteCond hinzufügen, um zu überprüfen, ob der Pfad bereits auf den erwarteten Wert gesetzt ist (dh nur Requests mit dem Pfad auf/var/www/html umschreiben und jedes andere Rewrite überspringen - wie es bereits geschrieben wurde) .

Ich werde vorschlagen, dass es sauberer sein könnte, so etwas zu tun, durch mod_vhost_alias, abhängig von Ihrem Anwendungsfall.

+0

Definitiv andere Optionen da draußen, werden Monde nehmen, um die Gründe für meine Beschränkung zu erklären. Ja, Sie haben recht, es endet umleiten nach '/ var/www/foo/var/www/foo/var/www/foo/var/www/foo/var/www/foo /' etc. Irgendwelche Tipps, was man als Bedingung eingibt? –

Verwandte Themen