Ich möchte eine mod_rewrite RewriteRule erstellen, die unabhängig von dem Speicherort der Webseite ist. Ich möchte die Umschreiberegel in einer .htaccess-Datei definieren. Nehmen wir dies als Beispiel:
RewriteEngine on
RewriteRule ^(.*)\.html html.php
Mit dieser Regel möchte ich alle * .html-Anforderungen einem html.php-Skript zuordnen, das sich im Webstamm befindet. Das Problem ist, dass sich die öffentliche Basis-URL der Webroot ändern kann. Das Webstammverzeichnis könnte sich also in http://www.somewhere.tld/
oder in einem Unterverzeichnis unter befinden http://www.somewhere.tld/foo/bar/
.
Die Verwendung eines relativen Pfads in einer Umschreiberegel funktioniert jedoch nicht. Also muss ich eines davon schreiben:
/html.php (When web is located in root directory of the web)
/foo/bar/html.php (When web is located in foo/bar sub directory)
Alternativ kann ich eine RewriteBase festlegen, aber ich möchte diesen Pfad einfach überhaupt nicht konfigurieren. Ich möchte, dass Apache automatisch das Richtige tut, damit ich das Web einfach in ein Verzeichnis kopieren kann und es funktioniert, ohne die Umschreiberegeln mitzuteilen, in denen sich das Web befindet. Wie kann ich das tun?
.htaccess
, Sie haben Bereitstellung einer nicht bereits festgelegt) an RewriteBase
anderer Stelle in der Config (einschließlich aller geerbten configs, wenn mod_rewrite Erbe gewesen installieren). Beachten Sie, dass dies interne Umschreibungen betrifft (wie in der Frage und allen Antworten unten verwendet), nicht externe Weiterleitungen (die in der Tat ein Problem darstellen würden).