За последние 24 часа нас посетили 21122 программиста и 1632 робота. Сейчас ищет 1491 программист ...

Помогите с регуляркой в .htaccess

Тема в разделе "Регулярные выражения", создана пользователем Namer, 24 май 2011.

  1. Namer

    Namer Активный пользователь

    С нами с:
    14 апр 2010
    Сообщения:
    492
    Симпатии:
    0
    Надо чтобы на сайте временно повисела заглушка на главной странице и чтобы она была доступна по запросу / и /index.html , а во всех остальных случаях открывался файл index.php без переадресаций.
    Делаю так:
    .htaccess
    Код (Text):
    1.  
    2. DirectoryIndex index.html
    3.  
    4. Options +FollowSymLinks
    5. RewriteEngine on
    6. RewriteCond %{REQUEST_URI} !=/
    7. RewriteCond %{REQUEST_URI} !=/index.html
    8. RewriteRule (.*) index.php
    В результате если запрашиваю mydomain.com/index.html - все ок, вижу index.html
    А если запрашиваю просто mydomain.com то вижу index.php, хотя при этом ведь %{REQUEST_URI} будет / и поэтому вроде как должен видеть index.html
    Подскажите где ошибка?
     
  2. Namer

    Namer Активный пользователь

    С нами с:
    14 апр 2010
    Сообщения:
    492
    Симпатии:
    0
    Блин, человеки, подскажите :(
    Я для теста уже пробовал в index.php делать
    PHP:
    1. echo $_SERVER["REQUEST_URI"];
    так выводит /
    Но почему?
    Ведь согласно условия RewriteCond %{REQUEST_URI} !=/ если / то RewriteRule (.*) index.php не должно выполняться, а оно выполняется.
    Хрень какая-то...
     
  3. Namer

    Namer Активный пользователь

    С нами с:
    14 апр 2010
    Сообщения:
    492
    Симпатии:
    0
    Может хоть мысли у кого-то есть по этому поводу?
     
  4. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    Namer
    обычно все используют вариант "если файл не найден - идти в index.php". вот мой, к примеру:

    Код (Text):
    1. RewriteEngine on
    2. RewriteCond %{REQUEST_FILENAME} !-d
    3. RewriteCond %{REQUEST_FILENAME} !-f
    4. RewriteCond %{REQUEST_URI} !=/favicon.ico
    5. RewriteRule ^(.*)$ index.php?route=$1 [L,QSA]
     
  5. Namer

    Namer Активный пользователь

    С нами с:
    14 апр 2010
    Сообщения:
    492
    Симпатии:
    0
    Gromo, спасибо!
    Забыл что есть вот эти штуки: -d -f и др.
    Сделал по твоему варианту. Смысл действительно тот же получился. Просто редко мудрю в .htaccess поэтому делаю как получается.
    Но вообще я так и не понял почему мой вариант не заработал. Ведь все логически правильно сделано. Я чуть голову не сломал: ведь все вроде бы верно, а не работает :(
     
  6. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    Namer
    данный вариант лучше, т.к. позволит напрямую отдавать скрипты, картинки и хтмл файлы