Ich versuche, eine bestehende Website, Route pro Route langsam übernehmen. Ich fand Apache Alias(Match)
, die mir erlaubt, eine andere (Inhalt) Dokumentstamm pro Anfrage festzulegen. Aber ich scheitere mit Schrägstrichen und komplexeren Pfaden.Split DocumentRoot mit Apache Alias pro Anfrage Pfad
Mein Ziel ist es nun, die alte Website so zu bedienen, wie sie es gewohnt ist. Und um eine neue Website zu haben, die eine erste spezifische Anfrage erfüllt, sagen Sie /foo
und /foo/*
.
Ich habe meine vHost Setup wie folgt aus:
<VirtualHost *:80>
ServerName example.com
UseCanonicalName on
AliasMatch ^/foo/(.*)$ /www/new/$1
AliasMatch ^/foo$ /www/new/$1
<Directory /www/new/>
Options +FollowSymLinks -MultiViews
AllowOverride All
Require all granted
</Directory>
DocumentRoot /www/old
<Directory /www/old/>
Options +FollowSymLinks -MultiViews
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
In beiden Verzeichnissen Ich habe ein .htaccess
mit:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ index.php/$1 [L]
Die index.php
‚s Show 'alten' oder 'neuen' je nach ihrer Verzeichnis.
Was zu den verschiedenen Routen passiert, ich teste:
- Wenn
example.com/bar
aufgefordert wird, zeigt ‚alte‘. - Bei Anforderung
example.com/foo
leitet es auch/foo/
um und zeigt dann "neu". - Bei Anforderung
example.com/foo/bar
zeigt es "alt".
Ich möchte nicht die erzwungene Umleitung von /foo
zu /foo/
. Und ich möchte /foo/bar
zeigen "neu".
Ich habe Apache's mod_alias
verfolgt, um die multiple AliasMatch
Direktiven zu bekommen, um alles nach /foo
zu fangen, aber anscheinend funktioniert das nicht richtig. Außerdem lese ich nichts davon, dass der abschließende Schrägstrich magisch hinzugefügt wird.
Wer kennt die Zaubertricks?