Я пытаюсь понять, что делают эти две строки в 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 :