[FIXED] Neue `mod_rewrite`-Regeln zusammenführen und altes Verhalten beibehalten, was ist falsch?

Ausgabe

Ich verwende Apache2 mit dem folgenden (guten) .htaccessim Stammverzeichnis meiner Website:

 #OLD (GOOD, IS WORKING!)
 # If requested url is an existing file or folder, don't touch it
 RewriteCond %{REQUEST_FILENAME} -d [OR]
 RewriteCond %{REQUEST_FILENAME} -f
 RewriteRule . - [L]

 RewriteRule ^(urn|URN):(.+)$     index.php?urn=$2 [L]
 RewriteRule ^([a-zA-Z\d\-]+)$    index.php?obj=$1 [L]

Jetzt muss ich eine neue Bedingung für den Ordner xWiki zusammenführen

#NEW: some conflicts, how to preserve old and add /xWiki* behaviour?
RewriteCond %{REQUEST_FILENAME} !-f  
RewriteRule ^xWiki/?(.*)$ /xWiki/index.php?title=$1 [L,QSA]

Wie kann man “zusammenführen”, um altes Verhalten beizubehalten, außer zu /xWiki?

Nur das Hinzufügen von RewriteRule ^xWiki/?(.*)$funktioniert nicht, und das !-fsteht im Konflikt mit der gleichen -fBedingung …

Lösung

Habe es so:

 #OLD (GOOD, IS WORKING!)
 # If requested url is an existing file or folder, don't touch it
 RewriteCond %{REQUEST_FILENAME} -d [OR]
 RewriteCond %{REQUEST_FILENAME} -f
 RewriteRule . - [L]

 RewriteRule ^xWiki/(.*)$ /xWiki/index.php?title=$1 [L,QSA]

 RewriteRule ^(urn|URN):(.+)$     index.php?urn=$2 [L,QSA]
 RewriteRule ^([a-zA-Z\d\-]+)$    index.php?obj=$1 [L,QSA]
  • Das Hauptproblem besteht darin, die RewriteRulean der richtigen Stelle (vor anderen RewriteRules) zu platzieren und zu verstehen, dass es keinen Konflikt mit -fund gibt !-f(keine Änderungen in der -fist die Zusammenführungslösung).
  • Eine gute Optimierung bestand darin, Regex in zu ^xWiki/?(.*)$ändern ^xWiki/(.*)$.


Beantwortet von –
anubhava


Antwort geprüft von –
David Goodson (FixError Volunteer)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like

[FIXED] htaccess Unterordner stille Weiterleitung basierend darauf, wie viele Unterordner die URL/der Link hat

Ausgabe Ich habe folgende Situation Hauptwebsitehttps://www.example.com Ich will: jede https://www.example.com/folder1/folder2/folder3/zu stille Umleitung zuhttps://www.example.com/folder1/index.php?d2=folder2&d3=folder3 jede https://www.example.com/folder1/folder2/folder3/folder4/zu stille Umleitung zuhttps://www.example.com/folder1/secondindex.php?d2=folder2&d3=folder3&d4=folder4…