Ich möchte, dass mod_rewrite Folgendes tut:
http://server/*
-> Weiterleitung zu http://server/app/*
http://server/app/*
sollte nicht umgeleitet werden.
http://server.domain/*
-> Weiterleitung nach http://server/app/*
http://server.domain/app*
-> Weiterleitung nach http://server/app/*
Es muss mit mod_jk funktionieren!
Bearbeiten: Dies ist die endgültige Lösung
# force use of host 'server'
RewriteCond %{HTTP_HOST} !^server$
RewriteRule ^(.*)$ server$1 [R,NE,L]
# prepend/app to URL if missing
RewriteCond %{request_uri} !^/app.*?
RewriteRule ^(.+?)$ app/$1 [R,NE,L]
Danke dir, Fahadsadah und Insanity5902! Ich zögere, einen von Ihnen als "korrekt" zu kennzeichnen, da beide wertvolle Informationen für die endgültige Lösung geliefert haben.
Verwenden Sie die folgenden Konfigurationsanweisungen (Sie möchten sie wahrscheinlich Ihrer .htaccess
-Datei hinzufügen):
RewriteEngine on
RewriteCond %{request_uri} !^/prepended
RewriteRule ^(.+?)$ prepended/$1
Das sollte besser funktionieren
RewriteEngine On
RewriteCond %{HTTP_HOST} !^server$ [NC]
RewriteRule ^(.*)$ http://server/$1
RewriteRule ^$/app
Dies ist nicht in meinem Kopf, aber was sollte sein? Die Anfrage kommt an, wenn Server nicht für den Hostnamen verwendet wird, wird sie zu http://server umgeleitet, wobei der Rest des URI-Felds erhalten bleibt. Dann werden die Regeln erneut verarbeitet, die erste wird übersprungen (da RewriteCond falsch ist) und dann die RewriteRule verarbeitet. Was bedeutet, wenn der URI leer ist, senden Sie ihn an/app. Wenn der URI etwas anderes als leer ist, wird das verwendet, was bereits vorhanden ist.
Zusätzlich zu dem, was Sie bereits haben, sollte es auch als
funktionierenhttp://server/foo -> http://server/foo
http://server.domain/foo -> http://server/foo
Lass mich wissen, wie das funktioniert. In meinem Kopf scheint es gut zu funktionieren :)