Ausgabe
Ich verwende Apache2 mit dem folgenden (guten) .htaccess
im 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 !-f
steht im Konflikt mit der gleichen -f
Bedingung …
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
RewriteRule
an der richtigen Stelle (vor anderen RewriteRules) zu platzieren und zu verstehen, dass es keinen Konflikt mit-f
und gibt!-f
(keine Änderungen in der-f
ist 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)