RewriteCond нарушает RewriteRule без видимой причины - PullRequest
0 голосов
/ 21 сентября 2011

Я только начал играть с mod_rewrite и пытаюсь перенаправить все запросы в старый html-файл, чтобы перейти к php-файлам.

Вот содержимое .htaccess:

RewriteCond $1.php -f
RewriteCond $1.html !-f
RewriteRule ^(.*).html$ $1.php

Проблема в том, что он не работает, когда я набираю URL на html-странице, я получаю 404. Ничего в журналах ошибок Apache, только 404 в журнале доступа. Следует перенаправить на php.

Теперь index.php существует, и я могу перейти к нему напрямую, а старый файл index.html не существует.

Тем не менее, если я закомментирую строку RewriteCond $ 1.php -f Все работает нормально, т.е. перенаправляет мои запросы index.html на index.php.

Есть идеи, почему? -F должен проверять, что «файл существует» и $ 1 должен быть «файлом», я думаю?

Кстати, у кого-нибудь есть хороший, дружественный учебник по mod_rewrite, который они бы порекомендовали?

1 Ответ

0 голосов
/ 21 сентября 2011

В .htaccess вам не нужно использовать ^ и $.Все правила применяются к URL-адресам относительно текущего каталога.

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