2017-02-07 4 views
0

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?

+1

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

+0

Gute Arbeit! Ich denke, der erste kann einfacher geschrieben werden als 'RewriteEngine On RewriteCond '% {QUERY_STRING}" ". * (?:^| &) Oldid = ([^ &] *) &?. *" RewriteRule "^ foo/(. *) "./script.php?x=%1 [L]' –

Antwort

Verwandte Themen