Erlauben Sie dem übergeordneten .htaccess, alle Assets umzuleiten

Erlauben Sie dem übergeordneten .htaccess, alle Assets umzuleiten

Wir migrieren von einer Subdomain zu einer anderen. Diese bestimmte Domain hat eine Teilmenge mehrerer Websites. Ich habe die folgende Umschreibung eingerichtet, um die Umleitung global zu handhaben:

In docroot/.htaccess("Regel Nr. 1")

RewriteEngine On
RewriteCond %{HTTP_HOST} ^virtual\.example\.com$
RewriteRule ^(.*)$ http://events.example.com/$1 [L,R=301]

Es funktioniert im Allgemeinen, mit Ausnahme einiger Websites, die ihre eigenen Umschreibregeln haben. Beispielsweise /roadshow/2015/hat die folgende Catch-All-Regel:

In docroot/roadshow/2015/.htaccess("Regel Nr. 2")

RewriteCond %{REQUEST_URI} ^(.*)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\.php$
RewriteRule .* framework/main.php?url=%1&%{QUERY_STRING} [L]

Das Problem:Die darunter liegenden Seiten /roadshow/2015/werden weiterhin geladen, als ob Regel Nr. 1 nicht existiert.

Was übersehe ich hier? :)

Antwort1

mod_rewrite-Direktiven in .htaccess-Dateien in Unterordnern haben Vorrang vor denen in übergeordneten Ordnern. Versuchen Sie, sie RewriteOptions Inheritin der .htaccess-Datei jedes Unterordners zu verwenden (siehehttp://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriteoptions).

Wenn Sie Apache 2.4.8 oder höher ausführen, können Sie RewriteOptions InheritDown verwenden, um es automatisch auf alle untergeordneten .htaccess-Dateien anzuwenden, anstatt jede einzelne ändern zu müssen.

verwandte Informationen