RewriteRule上的.htaccess错误500

时间:2014-09-19 12:26:40

标签: .htaccess mod-rewrite

此行在apache中导致500错误:

RewriteRule ^(.*)$ /frontend/artist/artist.php?seo=$1 [QSA,L]

这是我所有的htaccess:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^test\.fr [NC]
RewriteRule ^(.*)$ http://www.test.fr/$1 [L,R=301]
RewriteRule ^(.*)$ /frontend/artist/artist.php?seo=$1 [QSA,L]
</IfModule>

任何想法为什么?

1 个答案:

答案 0 :(得分:2)

那是因为您正在创建无限循环错误。

您的规则将始终匹配,并将继续执行 例如:

http://www.test.fr/this/url/is/cool

将被重写为

/frontend/artist/artist.php?seo=this/url/is/cool

也将被重写,因为您的规则无一例外地匹配所有内容。

等等......

解决方案

要避免此行为,您可以添加一个简单的条件(检查它是否是现有文件)

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /frontend/artist/artist.php?seo=$1 [QSA,L]
</IfModule>