此行在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>
任何想法为什么?
答案 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>