Проблема с .htaccess

Тема в разделе "Регулярные выражения", создана пользователем FL@SH, 11 авг 2009.

Статус темы:
Закрыта.
Модераторы: xpert13
  1. FL@SH

    FL@SH Читатель

    Заблокирован
    Регистр.:
    20 июл 2008
    Сообщения:
    193
    Симпатии:
    25
    Всем привет. в общем возникла проблема при составлении регулярного выражения в .htaccess
    есть 2 ссылки:
    http://site.ru/index.php?do=god&god=****
    и
    http://site.ru/index.php?do=god&god=****&cstart=2
    К первому применял вот такой способ
    PHP:
    RewriteRule ^god/(.*)(/?)+$ index.php?do=god&god=$[L]
    При переходе по ссылке http://site.ru/god/2009
    всё нормально.
    Но к второй ссылке пытаюсь применить так
    PHP:
    RewriteRule ^god/([^/]*)/page/([0-9]+)(/?)+$ index.php?do=god&god=$1&cstart=$[L]
    При заходе по ссылке http://site.ru/god/2009/page/3/ переменные получаются следующие:
    Array
    (
    [do] => god
    [god] => 2009/page/3/
    )
    Вопрос, почему переменной god привсаевается вся строка? Тоесть я не могу разграничить перемнные god & cstart
    По сути не получается составить регулярное выражение :-(
     
  2. ZuArt

    ZuArt Создатель

    Регистр.:
    11 фев 2008
    Сообщения:
    16
    Симпатии:
    4
    А ларчик просто открывается...у Вас все на себя забирает первая регулярка... варианта два на выбор:
    1) или конкретизировать первое выражение (RewriteRule ^god/([^/]*)(/?)+$ index.php?do=god&god=$1 [L])
    2) или поменять местами Ваши варианты... сначала поставить Ваше 2-ое, а потом 1-ое

    Выбирайте, какой из вариантов Вам ближе и проще ;)
     
    FL@SH нравится это.
  3. FL@SH

    FL@SH Читатель

    Заблокирован
    Регистр.:
    20 июл 2008
    Сообщения:
    193
    Симпатии:
    25
    Спасибо.Поменял местами - помогло.
     
  4. andrnag

    andrnag

    Регистр.:
    26 мар 2008
    Сообщения:
    350
    Симпатии:
    124
    А что означает вот эта конструкция? Конкретно: зачем там скобки и +?

    (/?)+
     
  5. ZuArt

    ZuArt Создатель

    Регистр.:
    11 фев 2008
    Сообщения:
    16
    Симпатии:
    4
    могу только предположить, что или просто опечатался человек, или подразумевалось, что в конце могут быть и несколько символов "/", а может и не быть вообще - в принципе в таком случае в конце можно просто поставить "/*".

    2 andrnag
    И еще фопрос не по теме вдогонку - а чем Вам так скобки мешают? Тем, что образуют еще одну "ненужную" обратную ссылку? да и пусть, она не мешает получить искомую строку - не придирайтесь, в любой задаче существует несколько путей решения и не всегда тот, который кажется Вам единственно верным, является таковым и для других... или просто природное свойство докопаться и покритиковать?
     
  6. andrnag

    andrnag

    Регистр.:
    26 мар 2008
    Сообщения:
    350
    Симпатии:
    124
    Я тоже подумал что лучше было бы *, или, в контексте url вообще ограничиться /? Но закралось сомнение, может быть здесь + в качестве квантификатора жадности? Или после ? это не применимо?

    2 ZuArt
    Да я не имел в виду, что там скобки не нужны, а в том смысле зачем после скобок + стоит. Если он там нужен для эмуляции *, то скобки необходимы. Прошу прощения, что ввел в заблуждение.
     
  7. killaman

    killaman Постоялец

    Регистр.:
    19 май 2009
    Сообщения:
    72
    Симпатии:
    7
    Друзья, подскажите пожалуйста что прописать в .htaccess чтобы решить такую задачку:
    HTML:
    есть ссылка (движок joomla):
    http://site.com/index.php?option=com_banners&task=click&bid=29
    стандартным джумловским преобразователем SEF ссылок получается новая ссылка:
    http://site.com/component/banners/click/29.html
    Вопрос: что прописать в .htaccess чтобы вместо слова banners подставлялось любое другое, например img?
     
  8. andrnag

    andrnag

    Регистр.:
    26 мар 2008
    Сообщения:
    350
    Симпатии:
    124
    Приведи полный .htaccess (я с джумлой не работал, не знаю какой там стандартный)

    Общее решение такое: чтобы перед той строкой, в которой генерится конечный УРЛ сделать преобразование этого banners в img. Типа так:
    RewriteRule (.*)banners(.*) $1img$2

    Или, если есть строка, где есть именно формируется слово banners, заменить на img.

    Короче нужен .htaccess.

    upd: или как там вообще в джумле ЧПУ делается? Что за SEF?
     
  9. killaman

    killaman Постоялец

    Регистр.:
    19 май 2009
    Сообщения:
    72
    Симпатии:
    7
    Попробовал. почему то не изменяет. Ни на локалке, ни на сервере.
    Я уже попробовал Artio JoomSEF и он может решить эту задачу, но парралельно выплывают другие проблемы, например, изменяются ссылки всех разделов (т.е. сформированных самой SEF джумлы), отключаю эту фишку и уже не используется стандартный SEF модуль + не работает поиск... я уже и незнаю что делать...
     
  10. andrnag

    andrnag

    Регистр.:
    26 мар 2008
    Сообщения:
    350
    Симпатии:
    124
    Offtopic: переходи на modx
     
Статус темы:
Закрыта.