我有这个: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内部服务器错误
答案 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
。