fragen stichworte

Apache Mod_rewrite

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.

antworten

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

funktionieren
http://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 :)