URL重写.htaccess

时间:2015-07-07 08:17:15

标签: .htaccess rewrite

我正在尝试制作一个理解

的重写规则

http://example.com/test/1234

作为

http://example.com/test.php?t=1234

这就是我现在所拥有的,它不起作用:

RewriteEngine on
RewriteRule ^test?t=([^/\.]+)/?$ http://mywebsite.com/test/$1 [L]

有人可以帮我一把吗?

2 个答案:

答案 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}变量来匹配查询字符串。