.htaccess -остановить обработку, если rewriterule true?

Вот мой файл.htaccess:

Options +FollowSymlinks
RewriteEngine on

Rewritecond %{http_host} ^mysite.com [nc]
Rewriterule ^(.*)$ http://www.mysite.com/$1 [r=301,nc]

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule. /404.php

Первый блок rewritecond / rewriterule предназначен для перенаправления пользователя на www, если он ввел адрес без www.

Второй блок rewritecond/rewriterule предназначен для перенаправления пользователя на страницу, которую я создал, если он вводит несуществующий -адрес.

Каждое из этих правил работает само по себе.:

Если мой файл.htaccess содержит только первый блок, то он успешно перенаправляет не-www-адреса на www-адрес.

И если вводится несуществующий -адрес, пользователь успешно перенаправляется на мою страницу 404.php.

Однако, если файл.htaccess содержит оба блока, и введен не -www-адрес, то вместо успешного перенаправления на www-адрес происходит следующее:

(1 )Отображается следующее на странице:

Перемещено навсегда

Документ перемещен сюда.

Кроме того, при попытке использовать ErrorDocument для обработки запроса возникла ошибка 500 Internal Server Error.

Сервер Apache/1.3.41 на mysite.com, порт 80

(2 )В журнале ошибок создается следующая запись :

[Пт 4 мая 01 :54 :19 2012] [ошибка] [клиент 109.109.109.109] мод _переписать :достигнуто максимальное количество внутренних перенаправлений. Предположим, ошибка конфигурации. Используйте «RewriteOptions MaxRedirects», чтобы увеличить лимит, если это необходимо.

Я предполагаю, что происходит то, что каким-то образом генерируется бесконечный цикл.

Мне интересно, решит ли проблему указание файлу.htaccess прекратить обработку команд при выполнении первого условия. Так кто-нибудь знает, как это сделать?

(Примечание. В целом,Я нахожу документацию по.htaccess абсолютно ужасной. Интересно, чувствует ли кто-нибудь еще что-то подобное.)

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

12
задан oyvey 4 May 2012 в 11:21
поделиться