htaccess重定向规则引发500错误

时间:2015-02-16 05:59:38

标签: .htaccess redirect

我的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错误。可能是什么原因?

谢谢。

1 个答案:

答案 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]