Некорректная работа Redirect с ЧПУ ссылками
Дмитрий |
|
---|---|
Помогите пожалуйста настроить правильную работу Редиректа с ЧПУ ссылками. У меня проблема вот в чем. После переноса страницы в другую категорию, понадобилось настроить обычный редирект в htaccess. Однако при использовании ЧПУ ссылок редирект работает некорректно. Т.е. при использовании такой конструкции:
Я получаю ссылку вида мой_сайт/manual/doc1?rwr=instructions и соотвестственно ошибку 404. Но если использовать не преобразованную ссылку, например:
То редирект работает нормально. Однако хотелось бы иметь привычный "красивый" вид ссылки. Можно ли этого добится? |
jCube Group |
|
---|---|
пребел уберите. Сделал группу в телеге https://t.me/Cotonti_help если что помогу с вопросами.
|
Дмитрий |
|
---|---|
#45016 jCube Group: Что убрать? Не понял |
Дмитрий |
|
---|---|
А зачем пробел убирать? Может я чего-то не понимаю, но это же стандартная конструкция параметра Redirect - Redirect 301 <старый URL> <новый URL>. И она всегда работает, за исключением этого случая с ЧПУ ссылками на Cotonti. Ну а если я убираю там пробел, то получаю на выходе адрес мой_сайт/instructions/index.php?e=page&c=manual&al=doc1 и ошибку "Сайт выполнил переадресацию слишком много раз. ERR_TOO_MANY_REDIRECTS." Для работы параметра Redirect как-раз и необходимо 2 адреса, разделенных пробелом. Если я не очень понятно обьяснил, что мне надо, то попробую подробнее. У меня была системная страница с алиасом instructions и она была перенесена в категорию manual, а её алиас сменен на doc1. Т.е. в данный момент мне нужно перенаправить пользователя со старого адреса - мой_сайт/instructions на новый адрес - мой_сайт/manual/doc1. И эта конструкция не работает, если использовать в качестве нового адреса ЧПУ ссылку и отлично работает если использовать прямую, без ЧПУ преобразования. |
kushelbek |
|
---|---|
#45014 Дмитрий: у меня вот так работают норм: Redirect 301 /portfolio/intensiv/Лэндинг-для-Школы-выездной-интесив https://domain.ru/index.php?e=page&c=web&id=79 Т.е куда редериктим пишем с полным адресом(http\https ) |
Дмитрий |
|
---|---|
#45022 kushelbek: Ну так и у меня работает) В принципе, функцию свою выполняет, и меня даже устраивает и такой вариант. Но хотелось бы чтобы все было красиво) Да и понять хочется, почему в варианте с ЧПУ не работает и как это исправить. Для личного саморазвития)) |
Edward |
|
---|---|
Ставите этот редирект выше стандартных?
У меня nginx, но работают такие редиректы. Начало файла, до стандарнтых редиректов: rewrite "^/zashchita-po-ugolovnym-delam" /voennyj-advokat-po-ugolovnym-delam permanent;
Email: ed.gabishev@gmail.com
Telegram: https://t.me/Ed_Gaba |
Roffun |
|
---|---|
#45023 Дмитрий: Если есть желание понять суть проблемы, нужно обратиться к документации и принципу работы URL в Cotonti. Если речь идёт о ЧПУ значит подразумевается обработка URL. В Cotonti они модифицируются в двух местах:
Если плагин включен и прописаны правила, это значит что движок будет отдавать содержимое по новым правилам, но сервер об этом ничего не знает, поэтому правила нужно добавить еще и в серверный файл. Для существующих адресов этого достаточно, но если речь идет о страницах которых не существует (в вашем случае движок подразумевает что хотите несуществующую страницу 404 переадресовать на новый адрес). Поэтому сырой URL (/index.php?e=page&c=manual&al=doc1) работает, ведь страница существует, а предыдущая ЧПУ не редиректится, потому что её как бы и не было, это просто ЧПУ редирект был. Если бы страница с которой редирект существовала, то всё сработало бы, а так приоритет отдаётся 404, отсюда и проблема с редиректом. Решение вопроса находится над ситуацией, все вышеперечисленные варианты это лишь костыли в данном случае. Для понимания процесса нужно посмотреть документацию: Что такое Хуки? В подразделе 2.1. Основные хуки можно прочитать, что:
Как видно из описания, хук input вызывается на этапе инициализации, поэтому его можно переопределить только в этой точке. А плагин UrlEditor как раз в этом месте вызывает функцию cot_apply_rwr() в которой происходит дальнейшая логика ЧПУ. Вывод: чтобы максимально влиять на ЧПУ, в том числа на удалённые/перемещённые URL, нужно делать это программно на уровне хука. Чтобы не писать дополнительный плагин, можно воспользоваться r301 от esclkm. После установки редирект можно добавлять из админки. p.s. Если протокол сайта https, нужно изменить его и в файле input.php (плагин давно не обновлялся). Улетел на другую планету, а там почты нету.. https://www.cotonti.com/forums/45298?m=posts
|