Поддержка Разное rewrite правила

  • Возможно вы сможете мне помочь

    catalog — это существующая страница на которой у меня плагином выводится список товаров
    дальше я хочу чтобы по нажатию на единицу товара мне показывалась подробная информация только этого единственного товара (как в нормальном каталоге), но чтобы url был красивый, типа: /catalog/derevo1/, а не /catalog/?el_name=derevo1
    Тоесть как бы произошел переход на страницу /catalog/derevo1/, а на самом деле мы остались на странице /catalog/ , а derevo1 можно было бы достать из какой-либо переменной.

    derevo1 это элемент каталога, в каталоге много элементов и если под каждый делать свою страницу, то страниц будет нереально много, а надо красивый url

    Делаю так:
    add_rewrite_tag(‘%el_name%’, ‘([^&]+)’);
    add_rewrite_rule(‘^(catalog)/([^/]*)/?’, ‘index.php?el_name=$matches[1]‘, ‘top’);

    Если я иду по адресу:
    http://мой сайт/catalog/?el_name=derevo1

    Переход не происходит, вообще ничего не происходит.

    P.S. правило есть в базе

Просмотр 9 ответов — с 1 по 9 (всего 9)
  • Модератор Юрий

    (@yube)

    Большое спасибо. Все работает.

    Продолжение :

    Не могу найти какие параметры указать в функции add_rewrite_rule() чтобы работало следующее:

    Существует страница http://мой сайт/catalog/priroda/

    На странице находится шорткод на месте которого формируется каталог со списком товаров, ссылки имеют вид:

    http://мой сайт/catalog/priroda/derevo1/
    http://мой сайт/catalog/priroda/kust2/
    http://мой сайт/catalog/priroda/kamen2/

    и существует страница http://мой сайт/catalog/odejda/

    На странице находится шорткод на месте которого формируется каталог со списком товаров, ссылки имеют вид:

    http://мой сайт/catalog/odejda/kurtka/
    http://мой сайт/catalog/odejda/noski5/

    Если я использую следующие параметры

    catalog/([^/]+)/([^/]+)/?$
    index.php?pagename=catalog&razdel1=priroda&tovar=$matches[2]
    и
    catalog/([^/]+)/([^/]+)/?$
    index.php?pagename=catalog&razdel1=odejda&tovar=$matches[2]

    то когда я иду по адресу:
    http://мой сайт/catalog/priroda/derevo1/ или http://мой сайт/catalog/odejda/kurtka/

    естественно попадаю на страницу http://мой сайт/catalog/ а все остальное имею возможность отловить в спец переменных,
    а мне нужно чтобы я попадал на страницу http://мой сайт/catalog/priroda/ или http://мой сайт/catalog/odejda/kurtka/ соответственно.

    Модератор Юрий

    (@yube)

    Ну так и делайте правила для страниц priroda и odejda, а не для их предка catalog.

    add_rewrite_rule('priroda/([^/]+)/?$','index.php?pagename=priroda&tovar=$matches[1]','top');
    попадаю на 404

    Юрий, может быть вы мне подскажите. Тема осталось не решенной. В списке форумов эту тему (rewrite правила) не смог найти. Куда она могла деться. Не хочется создавать дубль темы и попасть под предупреждение.

    Модератор Юрий

    (@yube)

    Страница http://мой сайт/catalog/priroda/ реально существует? не виртуально?

    Попробуйте

    add_rewrite_rule('catalog/priroda/([^/]+)/?$',...

    http://мой сайт/catalog/priroda/ реальная

    Ваш вариант:

    add_rewrite_rule('catalog/priroda/([^/]+)/?$','index.php?pagename=priroda&tovar=$matches[1]','top');

    http://мой сайт/catalog/priroda/?tovar=derevo1 приводит меня нужную страницу (но к сожалению этот url не устраивает)

    http://мой сайт/catalog/priroda/derevo1/ перекидывает меня на страницу http://мой сайт/catalog/priroda/
    Дебагер гугл хрома пишет:

    Request URL:http://rosmeha.spb.local/catalog/norka/22_4/
    Request Method:GET
    Status Code:301 Moved Permanently

    Может быть мне кто-нибудь порекомендует куда можно еще обратится с этим вопросом

Просмотр 9 ответов — с 1 по 9 (всего 9)
  • Тема «rewrite правила» закрыта для новых ответов.