У меня есть файл .htaccess на сервере Apache 2:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Правила работают, как и ожидалось, с любым запросом несуществующего файла или каталога, передаваемого программе index.php для обработки.
Правило также обходит перенаправление, если запрошенный файл существует, например любой из файлов .txt или .js на сервере.
Однако любой файл, заканчивающийся на .php, НЕ обрабатывается должным образом. Файлы существуют, но правила! -F и! -D игнорируются. Просто изменив расширение на .phpt и запросив тот же файл (с добавленной буквой "t" в конце), вы увидите содержимое файла.
Любые подсказки, почему только файлы .php пропускают правила! -F и! -D?
Mod_rewrite работает более предсказуемо с парой: Cond + Rule Your line:
RewriteRule ^index\.php$ - [L]
Уже соответствует следующей строке, потому что index.php - это файл.
Пытаться:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /index.php [L]
</IfModule>
Я думаю что . будет соответствовать только одному персонажу, и я изменил его. к. *