За последние 24 часа нас посетили 21432 программиста и 1695 роботов. Сейчас ищут 1903 программиста ...

Возможно ли сократить RewriteRule ^blog$|^blog/ blog.php ?

Тема в разделе "Регулярные выражения", создана пользователем Вованыч, 23 июн 2009.

  1. Вованыч

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

    С нами с:
    18 дек 2008
    Сообщения:
    12
    Симпатии:
    0
    В .htaccess
    Код (Text):
    1. RewriteEngine On
    2. RewriteRule ^blog$|^blog/ blog.php [L
    Необходимо: чтобы при /blog/2009/06/... и при просто /blog (без слэша) срабатывал blog.php.
    Можно ли как-то сократить или переписать более правильно, чем у меня?

    Ругателям сразу:
    1. Это лишь шаблон правил, которые будут создаваться автоматически при появлении модулей cms, поэтому и спрашиваю.
    2. Мне не надо направлять все запросы к какому-то скрипту и в нём разруливать что куда, надо именно через .htaccess
     
  2. lexa

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

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Код (Text):
    1. RewriteRule ^blog/(\d{4})/(\d{2})/?$ blog.php [L] # перенапраявляет blog/ГГГГ/ДД на blog.php
    2. RewriteRule ^blog/?$ blog.php [L] # перенапраявляет blog (или blog/) на blog.php
    http://www.egoroff.spb.ru/portfolio/apache/ - тут две отличные статьи. Одна из них есть перевод документации, вторая - решение конкретных задач с примерами.
     
  3. Вованыч

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

    С нами с:
    18 дек 2008
    Сообщения:
    12
    Симпатии:
    0
    lexa, не-не-не, всё что дальше /blog/ я привёл лишь как пример, что там что-то может быть, что уже будут обрабатываться скриптом, на который направляется.
     
  4. lexa

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

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Код (Text):
    1. RewriteRule ^blog(/(.*?))?$ blog.php?q=$2 [L]
    Что-то типа такого. Эксперементируй.
     
  5. Вованыч

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

    С нами с:
    18 дек 2008
    Сообщения:
    12
    Симпатии:
    0
    Код (Text):
    1. RewriteRule ^blog(/.*)?$ blog.php [L]
    ^ - начало анализируемой строки

    blog - обязательно будет присутствовать в строке

    (/.*) - подправило, говорящее:
    • / - наличие слеша
      . - любой символ
      * - возможно наличие неограниченное количество раз или отсутствие (того, что левее, в данном случае это .)
    ? - возможно наличие подправила или его отсутствие (подправила находятся слева знака ?, в нашем случае это будет группа (/.*), тк определена в скобки)

    $ - конец анализируемой строки

    blog.php - если условия будут выполнены, запустить файл blog.php

    [L] - это последнее правило, после него никакие другие правила не выполнять