Ich sende jede Anfrage über eine index.php mit Ausnahme von Seiten in meinem Blog-Unterverzeichnis. Ich konnte dies mit mod_rewrite in meinem übergeordneten Ordner tun und;Warum leitet dieser mod_rewrite nicht um?
RewriteCond %{REQUEST_URI} !^/blog
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
]
Aber ich würde auch gerne Anfragen in meinem Blog-Ordner senden, wenn sie die Form haben:
Dokumentation/some-Datei.
Ich habe versucht:
RewriteRule ^/documentation/(.+)$ https://www.some_domain.com/blog/documentation/$1
aber es sieht wie mein Wunsch ist in diesem Fall nicht auf den Blog-Ordner gesendet zu werden. Mein vollständiger Code ist unten:
RewriteEngine On
#redirect to index.php as appropriate
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^/documentation/(.+)$ https://www.some_domain.com/blog/documentation/$1
RewriteCond %{REQUEST_URI} !^/blog
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
Edit:
ich eine leicht modifizierte Version von benutzt habe @ Rijul Vorschlag unten und nach dem RewriteRule zu vor der RewriteCond bewegen, es funktioniert, wie ich gehofft hatte. Mit anderen Worten, das Umschreiben für die Dokumentation führt das Umschreiben in den Blog-Unterordner durch. Und alle anderen Anfragen gehen durch meine index.php Datei. An dieser Stelle würde ich gerne verstehen warum.
RewriteEngine On
RewriteRule ^documentation/?(.*)$ /blog/documentation/$1 [R=301,L]
#redirect to index.php as appropriate
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
Es ist halb funktioniert! Nun, wenn ich Dokumentation einfüge, funktioniert es großartig. Aber jetzt macht es keine meiner "Nicht-Dokumentation" Weiterleitungen. Zum Beispiel bin ich nicht überzeugt, dass es im "allgemeinen" Fall jemals zur letzten Zeile kommt. – Eric
Können Sie eine Beispiel-URL angeben, die nicht funktioniert und das erwartete Ergebnis –
Zum Beispiel, www.my_domain.com/authenticate/show-user-login-form sollte auf meine Anmeldeseite gehen (die es ohne den obigen Code tut). Oder etwas so Grundlegendes wie www.my_domain.com sollte durch index.php geleitet werden und die Homepage anzeigen. Beides passiert nicht. – Eric