За последние 24 часа нас посетили 17478 программистов и 1650 роботов. Сейчас ищут 860 программистов ...

URL и mod_rewrite. Правила обработки переменных

Тема в разделе "Прочие вопросы по PHP", создана пользователем Dzx, 27 май 2008.

  1. Dzx

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

    С нами с:
    27 май 2008
    Сообщения:
    12
    Симпатии:
    0
    Доброго времени суток всем форумчанам.
    Такая вот задача передо мной стоит:
    есть url: http://domen.ru/index.php?rubric=1
    Легко переделать с помощью mod_rewrite в более красивый и удобный http://domen.ru/rubric/1
    RewriteRule ^rubric/(.*)$ /index.php?rubric=$1
    Но вот если у меня подкатегория к рубрике имеет вид http://domen.ru/index.php?rubric=1&subrubric=2
    то по идеии
    RewriteRule ^rubric/(.*)/(.*)$ /index.php?rubric=$1&subrubric=$2
    но мне нужно чтобы два этих выражния работали одновременно. Т.е. если переменная subrubric не задана, то apache преобразовывал бы по правилу RewriteRule ^rubric/(.*)$ /index.php?rubric=$1
    а если subrubric задана, то по правилу RewriteRule ^rubric/(.*)/(.*)$ /index.php?rubric=$1&subrubric=$2
    Помогите реализовать. Заранее благодарен.
     
  2. lexa

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

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Правила реврайта иерархичны: что первое сошлось, то первично. Это во-первых. Во-вторых, лучше указывать более жёсткие правила, маска (.*) слишком абстрактна. Нужны цифры пиши ([0-9]+).

    Код (Text):
    1. RewriteRule ^rubric/([0-9]+)/([0-9]+)$ /index.php?rubric=$1&subrubric=$2 [L]
    2. RewriteRule ^rubric/([0-9]+)$ /index.php?rubric=$1 [L]
     
  3. lexa

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

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Правила реврайта: что первое сошлось, то и пользуем. Это во-первых. Во-вторых, лучше указывать более жёсткие правила, маска (.*) слишком абстрактна. Нужны цифры - пиши ([0-9]+).

    Код (Text):
    1. RewriteRule ^rubric/([0-9]+)/([0-9]+)$ /index.php?rubric=$1&subrubric=$2 [L]
    2. RewriteRule ^rubric/([0-9]+)$ /index.php?rubric=$1 [L]
    [/quote]
     
  4. Dzx

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

    С нами с:
    27 май 2008
    Сообщения:
    12
    Симпатии:
    0
    lexa, спасибо тебе огромное. Помог.
     
  5. dAllonE

    dAllonE Guest

    [offtop]Припев 2 раза? ;) [/offtop]
     
  6. lexa

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

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    dAllonE, странная штука, я отредактировал пост дважды. Сглючило чё-то. :)