PHP删除扩展名&重写$ _GET请求

时间:2015-08-25 23:14:11

标签: php apache .htaccess mod-rewrite nginx

我正在尝试重写PHP网址: example.org/file.php?param=val&param=val

于: example.org/file/param/val/param/val

我的服务器上有每个PHP文件,但我无法理解。我的.htaccess将删除.php扩展名,但我不能让它重写$ _GET请求。

如果有人可以帮助我,那就太好了。另外,我打算使用nginx进行制作,所以如果有人能帮我转换.htaccess与nginx兼容,我会很感激。

谢谢!

编辑: 这是我目前的.htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/$ $1.php
RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]

1 个答案:

答案 0 :(得分:0)

没有使用它的直接经验,但是this page表示您要使用RewriteCond来查找查询字符串,并将正则表达式匹配模式应用于该字符串。然后,您的重写规则将提供该模式的匹配。

所以,如果我理解正确,请注意以下内容

RewriteCond %{QUERY_STRING}     ^query=(.*)$    [NC]
RewriteRule ^/old-search$       /search/(%1)    [NC,L,R=301]

会匹配像

这样的网址
/old-search?query=something

并将其转换为

/search/something

语法可能因Apache版本而异。