переписать вопрос URL - PullRequest
       6

переписать вопрос URL

0 голосов
/ 09 августа 2010

Я хотел бы знать, почему следующий htaccess-файл выдает ошибку 500:

<IfModule !mod_rewrite.c>
    ErrorDocument 500 "Your_Server_Is_Not_Compatible: Apache does not have mod_rewrite loaded. Please check your Apache setup."
    RedirectMatch 302 .* index.php
</IfModule>

<IfModule mod_rewrite.c>

 RewriteEngine on
 RewriteRule ^(.*)$ versions/0/1/$1

</IfModule>

Заранее спасибо

1 Ответ

2 голосов
/ 09 августа 2010

Вы получаете ошибку 500, потому что вы заставляете сервер входить в бесконечный цикл (на что он сердится и выдает ошибку, чтобы остановиться).

Это из-за вашего RewriteRule, который всегда будет совпадать:

RewriteRule ^(.*)$ versions/0/1/$1

^(.*)$ соответствует значению versions/0/1/, поэтому после выполнения первоначальной перезаписи набор правил переоценивается и создает цикл, который выглядит следующим образом:

versions/0/1/something
versions/0/1/versions/0/1/something
versions/0/1/versions/0/1/versions/0/1/something

.. и т. Д.

Вы должны подготовить RewriteRule для предотвращения зацикливания, возможно, следующим образом:

 RewriteEngine on
 RewriteCond %{REQUEST_URI} !^/versions
 RewriteRule ^(.*)$ versions/0/1/$1

Кроме того, ваше утверждение ErrorDocument 500 не имеет особого смысла, поскольку вы никогда не сгенерируете ошибку 500 , потому что у вас не включен mod_rewrite, поскольку вы окружили соответствующий mod_rewrite директивы с <IfModule mod_rewrite.c>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...