К овырялся как-то вечером на одном из своих проектов, надо было настроить в файле htaccess редирект 301 с нескольких старых страниц с одного домена на другой. И столкнулся с неожиданной проблемой.
Редирект не срабатывал, и всё тут. Никак. Всё перепробовал.
Казалось бы, обычная конструкция в файле htaccess, ничего такого. Например, со старой страницы httр://oldsite.ru/entry.php?b=5 на httр://newsite.ru/blabla.html она бы выглядела так:
Redirect 301 /entry.php?b=5 httр://newsite.ru/blabla.html
Мозг вынес, но гугл в помощь. Как оказалось, вся причина в знаке вопроса (?) в URL старой страницы. В этом самом entry.php ? b=5. Оказывается, что не все сервера (вообще многие) не отрабатывают такую команду, если в URL старой страницы есть знак вопроса. Так что, часто вся проблема именно в этом.
Решение оказалось следующее. Вместо обычной вышеуказанной одной строчки в файле htaccess пишем две другие для каждой страницы отдельно:
RewriteCond % ^b=5$ RewriteRule ^entry.php$ httр://newsite.ru/blabla.html? [R=301,L]
После этого редирект 301 заработал как по нотам.
Вы спросите, а причем тут пример с файлом страницы из Vbulletin (/entry.php?b=5), ведь речь должна идти о WordPress? Так я напоминаю, что и в WordPress, если вы не используете ЧПУ, постоянные ссылки также имеют знак вопроса в своем URL (например /?p=123).
Надеюсь, что решение этого вопроса также поможет какому-нибудь самоучке, как и я.
Три важных совета и семнадцать конкретных примеров установки 301 переадресации страниц через htaccess!
Содержание
- Советы
- 1 ответ 1
- Всё ещё ищете ответ? Посмотрите другие вопросы с метками .htaccess redirect редирект или задайте свой вопрос.
- Похожие
Советы
Располагайте переадресации страниц в файле от частных к более глобальным (сверху вниз). Например: простая переадресация двух страниц стоит выше, чем глобальное правило редиректов с www на без www.
Избегайте последовательных редиректов (двух, трех и т.д.). Правила должны быть настроены так, что при возникновении редиректа он должен перенаправлять пользователя (робота) только один (!) раз. Каждое лишнее переадресация – это секунды драгоценного времени отдачи страницы, это нагрузка на сервер, это нечеткие команды для поисковых роботов.
Не забывайте, что многие браузеры кешируют (запоминают редиректы), поэтому проверять переадресации лучше на сайте – http://www.bertal.ru.
В файле обязательно должна присутствовать команда:
Нужно перенаправить юзера со старой версии страницы /show? > на новую /show/708 вместо 708 любое число. Делал так:
1 ответ 1
UPD
Все правила я вам переписывать не буду, но сам принцип отображу
Всё ещё ищете ответ? Посмотрите другие вопросы с метками .htaccess redirect редирект или задайте свой вопрос.
Похожие
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
дизайн сайта / логотип © 2019 Stack Exchange Inc; пользовательское содержимое попадает под действие лицензии cc by-sa 4.0 с указанием ссылки на источник. rev 2019.11.15.35459
Источник: