我的htaccess中有以下内容:
RewriteEngine On
RewriteRule ^([A-Za-z0-9]+).html$ http://www.somedomain.net/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?(.*?)/?$ index.php?s=$1 [L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ index\.php\?s=([^\s]*)
RewriteRule ^/?(.*?)/?$ %1?%2%3 [L,R=301]
这应该将查询转换为用户友好的URL。之前我曾在其他服务器上使用过相同的htaccess但它总是有效,但在某些服务器上我得到500错误。可能是什么原因?
谢谢。
答案 0 :(得分:1)
您需要重新排序规则:
RewriteEngine On
RewriteBase /
RewriteRule ^([A-Za-z0-9]+)\.html$ /$1 [R=301,L,NE]
RewriteCond %{THE_REQUEST} \s/+index\.php\?s=([^\s&]+) [NC]
RewriteRule ^ %1? [L,R=301,NE]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?(.+?)/?$ index.php?s=$1 [L,QSA]