301 redirect не работает

К овырялся как-то вечером на одном из своих проектов, надо было настроить в файле 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!

Советы

Располагайте переадресации страниц в файле от частных к более глобальным (сверху вниз). Например: простая переадресация двух страниц стоит выше, чем глобальное правило редиректов с 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

Понравилась статья? Поделиться с друзьями:
Vkontakte.INFO
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: