Доброй ночи! Сразу покажу, что у меня в htaacess: Код (Text): RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?route=$1 [L,QSA] Теоретически, как я понимаю, все запросы типа site.com/foo будут рассматриваться сервером как site.com/index.php?route=foo. Так и происходит, но почему у меня открываются и другие файлы? Например, у меня есть в корневой папке файл test.php, когда я захожу на site.com/test.php, то у меня на index.php ничего не передается, а сразу открывается test.php. Или другой пример, у меня есть папка /application/, и при site.com/application у меня вообще сразу каталог открывается, хотя серверу должно передаться site.com/index.php?route=application. Что не правильно? Я понимаю, что ответ, скорее всего, очень прост, но гугл не помог.
ну вы жертва тупого необдуманного копипаста. тут блин всего четыре строки. неужели так сложно пойти почитать мануал? давайте я за вас это сделаю: 1. включение движка рерайт 2. условие "если запрашиваемый объект не является физически лежащим на диске файлом" 3. условие (нет флага "или" значит трактуем как "и" с прошлым условием то есть 2) "если запрашиваемый объект не является физически лежащим на диске каталогом" 4. правило переписать все с регулярки на такое-то. считать последним. дописать оригинальную строку запроса. вот такую логику имеем в нашем эйчтиаксесе. проблема: читаем эйчтиаксес: 1. ладно. 2. физически файл лежит? да! выход. 3. пропуск. 4. пропуск. итог: выполняем физический файл. проблема: читаем эйчтиаксес: 1. ладно. 2. физически файл лежит? физически лежит, и это не файл (успех1). далее с логикой "и". 3. физически каталог лежит? да! выход. 4. пропуск. итог: выполняем листинг каталога. очень плохо гуглили. скорее даже вообще не гуглили.
Ganzal, большое спасибо, все по полочкам разложил! Я просто думал, что проблема в RewriteRule ^(.*)$ index.php?route=$1 [L,QSA] и гуглил именно по этому поводу.