За последние 24 часа нас посетили 17734 программиста и 1280 роботов. Сейчас ищут 1452 программиста ...

Перенаправления в htaccess

Тема в разделе "Настройка веб-сервера", создана пользователем [code], 27 окт 2014.

  1. [code]

    [code] Новичок

    С нами с:
    14 июл 2014
    Сообщения:
    32
    Симпатии:
    0
    Доброй ночи! Сразу покажу, что у меня в htaacess:
    Код (Text):
    1. RewriteEngine on
    2. RewriteCond %{REQUEST_FILENAME} !-f
    3. RewriteCond %{REQUEST_FILENAME} !-d
    4. 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.
    Что не правильно? Я понимаю, что ответ, скорее всего, очень прост, но гугл не помог.
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    ну вы жертва тупого необдуманного копипаста. тут блин всего четыре строки. неужели так сложно пойти почитать мануал?
    давайте я за вас это сделаю:
    1. включение движка рерайт
    2. условие "если запрашиваемый объект не является физически лежащим на диске файлом"
    3. условие (нет флага "или" значит трактуем как "и" с прошлым условием то есть 2) "если запрашиваемый объект не является физически лежащим на диске каталогом"
    4. правило переписать все с регулярки на такое-то. считать последним. дописать оригинальную строку запроса.

    вот такую логику имеем в нашем эйчтиаксесе.

    проблема:
    читаем эйчтиаксес:
    1. ладно. 2. физически файл лежит? да! выход. 3. пропуск. 4. пропуск.
    итог: выполняем физический файл.

    проблема:
    читаем эйчтиаксес:
    1. ладно. 2. физически файл лежит? физически лежит, и это не файл (успех1). далее с логикой "и". 3. физически каталог лежит? да! выход. 4. пропуск.
    итог: выполняем листинг каталога.

    очень плохо гуглили. скорее даже вообще не гуглили.
     
  3. [code]

    [code] Новичок

    С нами с:
    14 июл 2014
    Сообщения:
    32
    Симпатии:
    0
    Ganzal, большое спасибо, все по полочкам разложил! Я просто думал, что проблема в RewriteRule ^(.*)$ index.php?route=$1 [L,QSA] и гуглил именно по этому поводу.