htaccess查询字符串到路径不起作用

时间:2018-10-22 23:01:00

标签: .htaccess mod-rewrite

我有这个:http://example.com/TEST/user/ticket.php?id=1

我想要这个:http://example.com/TEST/user/ticket/1

这是我的.htaccess文件:

Options -Multiviews
RewriteEngine On
RewriteBase /TEST/user/
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$  $1.php [NC,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?ticket/(.*?)/?$ /ticket.php?id=$1 [L]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /ticket\.php\?id=([^\&\ ]+)
RewriteRule ^/?ticket\.php$ /ticket/%1? [L,R=301]

怎么了?

.php扩展名已正确隐藏,但查询字符串并未“转换”为路径。它给了我

  

500内部服务器错误

1 个答案:

答案 0 :(得分:0)

服务器日志应显示错误原因。

这里的一个问题是,在最后一行中,您使用的模式仅与ticket.php匹配,而与ticket.php?id=不匹配

RewriteRule ^/?ticket\.php$ /ticket/%1? [L,R=301]

尝试

RewriteRule ^/?ticket\.php?id=([^\&\ ]+).*$ /ticket/$1? [L,R=301]

不需要RewriteCond