htaccess 重定向规则抛出 500 错误

htaccess redirect rule throws a 500 error

我的 htaccess 中有以下内容:

RewriteEngine On
RewriteRule ^([A-Za-z0-9]+).html$ http://www.somedomain.net/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?(.*?)/?$ index.php?s= [L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ index\.php\?s=([^\s]*)
RewriteRule ^/?(.*?)/?$ %1?%2%3 [L,R=301]

这应该会将查询转换为用户友好的 URL。我以前在其他服务器上使用过相同的 htaccess,它总是有效,但在某些服务器上我收到 500 错误。可能是什么原因?

谢谢。

您需要重新排序您的规则:

RewriteEngine On
RewriteBase /

RewriteRule ^([A-Za-z0-9]+)\.html$ / [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= [L,QSA]