die folgenden Versuchen Sie, lassen Sie mich wissen, ob es funktioniert: nur
RewriteEngine on
RewriteBase/
# Allow files that exist to bypass rewrites
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Rewrite remaining files
RewriteRule ^/([-a-zA-Z0-9_]+)/([-a-zA-Z0-9_]+\.php)$ /$2?newparam=$1 [L,QSA]
Dies ermöglicht dir
und file.php
enthält alphanumerische Zeichen, Unterstrich und Bindestrich.
Die letzte Regel sucht nach einem URI, der zwei Pfadkomponenten zwischen den Schrägstrichen vergleicht. Die erste muss 1 oder mehr Zeichen in der gegebenen Menge [-a-zA-Z0-9_]+
sein, die zweite muss gleich sein, aber endet in .php
. Die Zeichen ^
und $
entsprechen der Vorder- und Rückseite des URI. Der Ersatz sagt, dass die zweite Klammergruppe (der file.php
Teil) an der Vorderseite und die erste geklammerte Gruppe (der dir
Teil) als ein Parameter genannt newparam
. Die [L,QSA]
am Ende sagt, dass dies die letzte [L]
Regel ist, wenn es übereinstimmt, also stoppe die Übereinstimmung weiter und führen die Umleitung und die [QSA]
bedeutet "Query String Append", die die ursprüngliche Abfrage Zeichenfolge am Ende wieder hinzufügt, so dass würde weg Entfernen Sie die ursprüngliche Abfragezeichenfolge.
@Keng mod_rewrite URL-Rewriting verwendet regexp, um vorhandenen URLs zu entsprechen. – Orbling
Bitte verwenden Sie aussagekräftige Titel für eine Frage. Es gibt [Tonnen] (http://stackoverflow.com/questions/941010/apache-url-rewriting) von [Fragen] (http://stackoverflow.com/questions/285383/apache-mod-rewrite-htaccess) bezüglich zu [URL] (http://stackoverflow.com/questions/2920816/apache-mod-rewrite-question) [neu schreiben] (http://stackoverflow.com/questions/3430488/apache-url-rewrite-problem) in Apache, die meisten von ihnen mit nicht-beschreibenden Titeln. – Lekensteyn