我正在尝试重写PHP网址: example.org/file.php?param=val¶m=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]
答案 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版本而异。