Вот мой файл.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 абсолютно ужасной. Интересно, чувствует ли кто-нибудь еще что-то подобное.)
Заранее спасибо.