Я пытаюсь понять, что делают эти две строки в Mod_Rewrite, и хотел бы помочь. Заранее спасибо.
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ $1.php
Они проверяют, является ли запрошенный URI существующим файлом или каталогом. !
перед этим условие «нет», поэтому запрос НЕ привязывается к файлу или каталогу.
См. Описание -f
и -d
в mod_rewrite
Не все запросы сопоставляются с некоторым файлом, чтобы он мог быть загружен браузером?
Нет. Запрос может быть для чего-то, чего не существует и будет переписан. Например, http://en.wikipedia.org/wiki/something будет означать, что URI является /wiki/something
, который не сопоставляется ни с каким физическим файлом или каталогом. Но внутри есть правило, которое переписывает /wiki/something
to index.php?title=something
, а index.php
действительно существует.
Изменить: для отредактированного вопроса
.php
в конец. !-f
и !-d
: