我正在尝试制作一个理解
的重写规则作为
http://example.com/test.php?t=1234
这就是我现在所拥有的,它不起作用:
RewriteEngine on
RewriteRule ^test?t=([^/\.]+)/?$ http://mywebsite.com/test/$1 [L]
有人可以帮我一把吗?
答案 0 :(得分:2)
你的rewriteRule是向后的,因为你应该在左边匹配你想要干净的url看起来像什么,并重写在文件在服务器上的位置的右边。但即使它没有倒退,你也必须逃避RegExp中的问号字符。但由于它是向后的,你应该使用更接近的东西:
RewriteEngine on
RewriteRule ^test/(.*) test.php?t=$1 [L]
答案 1 :(得分:1)
尝试:
RewriteEngine On
RewriteCond %{THE_REQUEST} /test.php\?t=([^&\s]+) [NC]
RewriteRule ^test.php$ /test/%1? [NC,R,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^test/([^/]+)/?$ /test.php?t=$1 [QSA,L,NC]
查询字符串不是重写规则指令中的匹配项,使用%{QUERY_STRING}或%{THE_REQUEST}变量来匹配查询字符串。