Почему я получаю ошибку 500 с этими RewriteRules - PullRequest
0 голосов
/ 17 августа 2011

Я настраиваю сайт на плане общего хостинга, поэтому я застрял, используя Apache и файл .htaccess.У меня есть 2 RewriteRules определены.Оба правила отлично работают на локальном компьютере, на котором работает Apache.

Первое правило - переписать запросы на /css/.css в /www/css/.css. Второе переписывает все остальное в/www/index.php

Первое правило, касающееся файлов CSS / JS, - это правило, вызывающее 500 ошибок, но я не могу понять, почему.Я пробовал разные варианты воплощения этих правил и всегда получал 500.

RewriteEngine on
RewriteBase /
RewriteRule ^(.*)\.(css|js) www/$1.$2 [L]
RewriteRule ^(.*)$ www/index.php [L]

1 Ответ

0 голосов
/ 17 августа 2011

Поскольку вы написали свои правила таким образом, что они создают бесконечный цикл перезаписи , который Apache должен в какой-то момент прервать, отсюда и 500 Internal Server Error.Если вы проверите свой журнал ошибок, вы увидите точное сообщение об ошибке.

Флаг [L] необязательно означает «перезаписать выполнено» - он просто означает «перезаписать выполнено на этой итерации - давайте снова начнем с начала»".

Очень полезно читать: RewriteRule Последний [L] флаг не работает?

Для решения вашей проблемы - вам нужно добавить некоторое условие, чтобы уже переписанные правила не переписывались снова и снова.Эти правила должны выполнить работу за вас (одно из возможных решений - все зависит от того, как настроен ваш настоящий проект):

RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_URI} !^/www/
RewriteRule ^(.*)\.(css|js) www/$1.$2 [L]

RewriteCond %{REQUEST_URI} !^/www/
RewriteRule ^(.*)$ www/index.php [L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...