1. Наш канал codeby в telegram. Пишем об информационной безопасности, методах защиты информации, о программирован. Не пропускай новости с кодебай, будь в тренде ! Подробнее ...

    Скрыть объявление
  2. Чат codeby в telegram перезагрузка. Обсуждаем вопросы информационной безопасности и методы защиты информации, программирование. Задавайте свои вопросы и комментируйте чужие. Подробнее ...

    Скрыть объявление

Регулярные Выражения В Rewriterule

Тема в разделе "Веб-серверы - администрирование", создана пользователем retsech, 23 янв 2014.

  1. retsech

    retsech New Member

    Репутация:
    0
    Регистрация:
    23 янв 2014
    Сообщения:
    1
    Симпатии:
    0
    Добрый день. Задался вопросом написать .htaccess, для реализации ЧПУ (человеко-понятных урлов)
    Задача в следующем.

    Необходимо разбить URL на части, зная, что они отделяются спец символами.
    А именно, есть URL вида:
    www.site.com/gallery/photo(145,312)[sepia,chb]'4-asc-title

    нужно разбить его на параметры:
    ?page= всё что в начале до символов '()', '[]', 'одинарная кавычка', '-asc-' или '-desc-'
    ?id= всё что в круглых скобках
    ?tg= всё что в квадратных скобках
    ?num= всё что после кавычки
    ?sort=asc&by= всё что после -asc- или -desc-

    Количество параметров и их место в URL'e может меняться, то есть, возможен такой урл:
    www.site.com/gallery/photo'4[sepia,chb]

    после двух дней шаманя с RewriteRule на локальной машине (и даже пару раз получая экран смерти) решил обратиться за помощью.

    Вот, что имею:

    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f

    RewriteRule ^([A-Za-z0-9-_/]+) ?page=$1 [QSA]
    RewriteRule [']([A-Za-z0-9]+) ?num=$1 [QSA]
    RewriteRule \(([A-Za-z0-9,]+)\) ?id=$1 [QSA]
    RewriteRule \[([A-Za-z0-9,]+)\] ?tg=$1 [QSA]
    RewriteRule -desc-([A-Za-z0-9]+) ?sort=desc&by=$1 [QSA]
    RewriteRule -asc-([A-Za-z0-9]+) ?sort=asc&by=$1 [QSA]

    Всё прекрасно работает со строкой вида, когда в переменную ?page= закидывается слэш, то есть с URL вида: site.com/gallery/photo(144)... всё парсится, а с site.com/gallery(145)... заполняется только переменная ?page и всё.

    Помогите найти проблему, пожалуйста.
     
Загрузка...

Поделиться этой страницей