Ich versuche, meine PHP-Skript URL freundlich zu machen. Mein Skript befindet sich im Root-Verzeichnis.Rewrite-Regel - auch wenn Ordner fehlt
Diese Urls:
http://www.example.com/foo/blah
http://www.example.com/foo/bar
http://www.example.com/foo/snoopy
mit dieser neu geschrieben werden:
RewriteRule ^foo/([0-9a-zA-Z-+]+)$ ./script.php?x=$1 [L,QSA]
Dies funktioniert gut, und mein Skript "blah" "bar" und "Snoopy" und alles einlassen das x param.
Aber wenn ich diese URL versuchen:
http://www.example.com/foo
ich ein 404. Wie umschreiben ich script.php x = all dann?
Auch ich habe einige alte Anfragen auf einer ähnlichen url:
http://www.example.com/foo/?oldstuff=2&oldid=55
Wie kann ich das umschreiben, wenn oldid param eingestellt ist: script.php?x=55
Wenn oldid param nicht gesetzt, ich will Weiterleitung an script.php?x=all
. Ich interessiere mich nicht für andere Params hier.
Und immer noch die oberen Umschreibungen?
endete ich damit auf, die gut zu funktionieren scheint: 'RewriteEngine On RewriteCond "% {QUERY_STRING}"„(*. (:?^| &)) Oldid = ([^ &] *) & (. *) &? $ " RewriteRule"^foo /(.*) "./script.php?x=%2 [L] RewriteRule"^foo /? $ "/script.php?x=all [ L] RewriteRule^foo /? ([0-9a-zA-Z - +] +) $ ./script.php?x=$1 [L] ' – EirikR
Gute Arbeit! Ich denke, der erste kann einfacher geschrieben werden als 'RewriteEngine On RewriteCond '% {QUERY_STRING}" ". * (?:^| &) Oldid = ([^ &] *) &?. *" RewriteRule "^ foo/(. *) "./script.php?x=%1 [L]' –