2014-09-19 2 views
1

Эта линия вызовет ошибку 500 в апача:.htaccess ошибка 500 на RewriteRule

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

Посмотрите в журнал ошибок сервера. – CBroe

ответ

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> 
Смежные вопросы