происходит автоматический редирект на реальный адрес страницы «pagename»
УХ! Как такое получилось добиться? Ибо в ВП проблема как раз обратная.
АПД.
Упсс. Сорри, то немного про другое..
Дело в том, что в зависимости от значения «anything» на странице будет меняться выдаваемый контент, а адреса ссылок на эти страницы естественно нужны постоянные.
Если я правильно понял, то
sitename.com/anything1/pagename/, sitename.com/anything2/pagename/,
sitename.com/anything3/pagename/ и тд — это 3 разные страницы, с сохранением контента на каждой. Так к чему изобретательство велосипедов, что мешает просто создать эти страницы?
wp-user.php
Да, всё верно. Создать страницы не вариант, контент тащится из базы и в ручную такое создавать для каждой страницы слишком трудоемко и не рационально.
Пока что сделал с помощью костылей так:
Отключил полностью редирект на всём сайте функцией
remove_action('template_redirect', 'redirect_canonical');
После этого страницы
http://sitename.com/anything/pagename/
стали выдавать 404-ую ошибку. И я просто изменил шаблон 404-ой страницы, где написал обработку нужных урлов.
Сейчас всё работает, но у такого метода есть некоторые недостатки:
1. Отключенный редирект для всего сайта. А возможности переадресации страниц весьма полезные и на сайте используются.
2. Страницы обрабатываются как 404-ые. Из-за этого, из того, что заметил, тег <title> страниц имеет неправильную надпись. В итоге необходимо либо выносить отдельный хэдер в шаблон 404-ой страницы и редактировать его дополнительно, либо создавать общий title для всех 404-ых страниц.
В общем буду рад увидеть другой вариант решения проблемы.
Модератор
Юрій
(@yube)
Создать страницы не вариант, контент тащится из базы и в ручную такое создавать для каждой страницы слишком трудоемко и не рационально.
А зачем вручную? Сделать шаблон для страницы — и пусть скрипт тащит то, что нужно, и выводит вместо контента.
Модератор
Юрій
(@yube)
http://sitename.com/anything/pagename/
Обычно «переменной» делают последнюю часть, а не середину. Для «хвостового» варианта есть нормальное, рабочее решение.
А зачем вручную? Сделать шаблон для страницы — и пусть скрипт тащит то, что нужно, и выводит вместо контента.
Точно так оно и было. Шаблон для страницы находился на странице pagename. Если страница задана без параметров, то используется один шаблон, если с параметрами — то другой. В итоге материал отображает как нужно, но URL адреса я не смог сделать правильными. Всегда происходил редирект.
Обычно «переменной» делают последнюю часть, а не середину. Для «хвостового» варианта есть нормальное, рабочее решение.
В конце тоже подходит. Какое решение? Не смог найти.
У меня структура сайта не стандартная. И сделать так:
http://sitename.com/pagename/name1/
http://sitename.com/pagename/name2/
http://sitename.com/pagename/name3/
я не смог. Потому что name1, name2, name3 это полностью дублирующие алиасы страниц записей, которые имеют свой шаблон. То есть при такой структуре будут вызываться допустим пермалинки записей, но мне нужен ещё один шаблон для этих же пермалинков.
Модератор
Юрій
(@yube)
И посмотрите Как убрать редирект?. Не уверен, что это то, но слова похожие 🙂
Юрий
Спасибо! Помогла эта ссылка. Там пример рабочий и именно то, что нужно.
Была одна проблема, для решения которой пришлось потратить уйму времени. Правила add_rewrite_rule никак не работали и я получал 404-ю ошибку. Проблема решается простым обновлением пермалинков в настройках.