Недавно мне пришло письмо с вопросом о настройке перенаправлений старниц со старых на новые. Несмотря на то, что о редиректе говорилось в сети уже многое, эта тема всё же актуальна, особенно после изменения структуры адресов сайта (например, при смене движка или создании динамического ресурса взамен старого статического).
Сам вопрос звучал так (к сожалению, автор не представился):
1. Интересует такой вопрос: Как правильно настроить редирект старых внешних ссылок, чтобы не потерялся вес который они передают?
Т.к. потерялся контент сайта, а домен остался, хотелось бы чтобы пользователи находили нужную для себя информацию и попадали по старым ссылкам на нужные разделы сайта.
Например ссылка вела на статьюhttp://domen1.ru/articles/page24.html, а сейчас данная статья расположена по другому адресу на том же доменеhttp://domen1.ru/articles2/page4.html
Стоит заметить, что сам редирект должен выполнять сервер, возвращая код статуса 301 (это значит постоянный). Поэтому, способ перенаправления будет зависеть от:
- Тип веб-сервера (apache, nginx и др);
- Используемая CMS (при отсутствии доступа к настройкам сервера);
- Используемый язык программирования (для самописных движков).
Популярные шаблоны .htaccess-редиректов можно найти в статье рассылки Optimization: 301 редирект: популярные шаблоны.
Если страниц, которые необходимо перенаправить на новые адреса, всего несколько штук, то используйте стандартный для вас метод. Однако, трудность возникает когда необходимо редиректить несколько десятков или сотен старых адресов на новые. В таком случае необходимо составлять карту url-адресов.
Карта url-адресов представляет из себя таблицу, в одной из колонок которой представлены старые адреса страниц, а во второй – соответствующие им новые адреса. Если её хранить в Excel, то получится примерно следующее:

В качестве старых адресов можно указывать таковые до смены структуры сайта, либо те несуществующие страницы, на которые к вам переходят посетители и по URL понятно, что они хотели найти. В последнем случае очень удобно вместо 404-ой страницы ошибки перенаправлять посетителя именно туда, куда он хотел попасть, заодно и ссылка, по которой он перешел из поломанной станет вполне рабочей. (Cм. также статью Отслеживание посещений страницы 404 в Google Analytics)
По карте url-адресов можно всегда видеть, каковы текущие перенаправления и, при надобности, добавлять новые. Остаётся внедрить эту карту в свой движок.
Внедрить перенаправление по карте можно на странице 404-ой ошибки, проверяя запрошенный адрес. Например, в PHP это делается с помощью глобальной переменной $_SERVER['REQUEST_URI'], сравнивать запрошенный URL с первой колонкой и если он найден в таблице, то перенаправлять посетителя на новый адрес с помощью header("Location: $newurl"). При этом таблица может храниться как в базе данных, так и в текстовом файле (например, в .csv-формате).
2. Если домен припаркован к blogger.com (гугловская платформа), там нет доступа к .htaccess, какие еще есть механизмы?
Если нет доступа к серверным настройкам, а только к настройкам шаблонов сайта, то можно использовать временный 302-ой редирект с помощью мета-тега:
<meta http-equiv="refresh" content="0; url=http://devaka.ru/new-address/page.html" />
Правда в этом случае есть нюансы с отображением адреса страницы в сниппете при поиске в Яндексе (См. как обрабатывает редиректы Яндекс).
Если у вас остались вопросы по редиректу страниц, можно обсудить их в комментариях.


Belinika
Июль 2, 2011 at 21:50
1Спасибо Сергей за ваши труды! Вы меня приятно удивили, не ожидал что целый пост напишите! :)
В общем пока писался ваш пост я уже и сам нашел решение – перелопатил интернет и нашел. Решение такие же, как и у вас в посте!
Федя
Июль 2, 2011 at 23:34
2Не в посте, а в посту :)
Илья
Июль 3, 2011 at 02:12
3По 302-му редиректу страницы не клеятся и, соотв-но, вес не передается.
fortresseo
Июль 3, 2011 at 13:23
4А если на вордпресс-блоге структура постоянных ссылок была /%category%/%postname%/, а теперь в настройках изменена на /%postname%/. Я попробовал перейти по старой ссылке. Все ОК. Отображается та же страница, только по-новому адресу (без рубрики в УРЛ). Значит Вордпресс делает редирект автоматически? И вес старых страниц перейдет на новые?
fortresseo
Июль 3, 2011 at 13:24
5Или еще надо прописывать правило:
RewriteRule ^([A-Za-z]+)/([A-Za-z]+)/$ /$1/([A-Za-z]+)/ ®
Илья
Июль 4, 2011 at 12:42
6Если есть ссылки в статьях на других сайтах, которые уже не изменишь с точки зрения урла, такого типа
http://www.alkometry.ru/index.php?option=com_content&task=view&id=47&Itemid=1, то как сделать редирект на
http://www.alkometry.ru/index.php?option=com_content&task=view&id=47
и можно ли это сделать сразу на все возможные урлы.
Или с такого
http://www.digital-voice.ru/index.php?page=shop.product_details&flypage=shop.flypage&product_id=548&category_id=141&manufacturer_id=0&option=com_virtuemart&Itemid=1
На такой
http://www.digital-voice.ru/index.php?page=shop.product_details&flypage=shop.flypage&product_id=548&category_id=141&option=com_virtuemart
&manufacturer_id=0 – здесь такой параметр отсутствует.
Кто так может сделать? Интерес не праздный.
Димон
Июль 4, 2011 at 13:08
7Спасибо за пост.
Есть живие примеры, как это делать?
“Например, в PHP это делается с помощью глобальной переменной $_SERVER[‘REQUEST_URI’], сравнивать запрошенный URL с первой колонкой и если он найден в таблице, то перенаправлять посетителя на новый адрес с помощью header(“Location: $newurl”)”
Devaka
Июль 4, 2011 at 18:48
8fortresseo, если один контент выдается по разным адресам, то это дубли. Как настроить в вордпрессе точно не скажу, лучше поискать. Но там вроде был плагин под названием redirection. Хотя, указанное вами правило наверное тоже сработает.
Илья, вот как раз, если есть опыт программирования, сделайте карту адресов, как было написано выше. Если нет опыта программирования, то вам понадобится человек, который сможет написать модуль под ваш движок eCommerce типа, на фрилансе можно поискать.
Димон, вот тут как один из вариантов от Keanor:
http://your-pages.ru/sozdanie-sajtov/realizaciya-redirekta-staryx-stranic-na-novye.html
fortresseo
Июль 4, 2011 at 23:29
9Нет, дублей нет, если перейти по старой ссылке, например http://www.fortress-design.com/seo/prodvizhenie-neizbezhno/, то Вордпресс, самостоятельно перенаправит на страницу с адресом http://www.fortress-design.com/prodvizhenie-neizbezhno/ без рубрики “seo”.
Я просто не уверен, поймут ли поисковики, что это та же страница, только с новым адресом. На всякякий случай, я дополнительно прописал вышеуказанное правило.
Еще посмотрю что это за плагин redirection.
Русаков Вячеслав aka Udachnik
Июль 6, 2011 at 14:59
10Думал, что 301 редирект можно организовать только на стороне хостера…
Ошибался. Спасибо за ликбез! ))
Егор
Июль 7, 2011 at 11:58
11Очень помогла статья!
Dj Tiesto
Июль 8, 2011 at 10:02
12Ну да – по етому вопросу много есть инфы в нете, незнаю почему именно у автора такой вопрос!!)
Сергей
Июль 9, 2011 at 20:23
13Полезный материал. Сам недавно интересовался этой темой!
Sarre
Июль 10, 2011 at 10:38
14А чем плох 301 редирект для данного варианта?
Диана
Июль 10, 2011 at 19:48
15fortresseo: удалось ли узнать что-то новое по теме? столкнулась с такой же проблемой.
fortresseo
Июль 11, 2011 at 09:51
16Диана, дополнительной информации нет. Но, судя по всему, я сделал правильно. Кроме того, что Вордпресс сам отображает нужную страницу, с учетом новой структуры. Но, для подстраховки, я прописал вышеуказанное правило в .htaccess
Vladic
Июль 12, 2011 at 16:47
17Извините за легкий тормоз, но немного не понял. Если у меня сайт на 20 000 страниц и я хочу перенести его на другой движок, как лучше сделать, чтобы ни одна страница не потеряла свой вес?
true-coder
Июль 16, 2011 at 10:29
18Для этих целей в Wordpress я пользуюсь плагином Simple 301 Redirects
netcat
Июль 17, 2011 at 17:50
19Спасибо за статью.
wordpress сам меняет правила в htaccess, если на него есть права для записи.
Vladic, всё от структуры зависит.
Если было site.ru/post/post1.html, а станет site.ru/post1.html, то можно обойтись одним правилом.
PupilSu
Июль 20, 2011 at 22:35
20Спасибо, достаточно познавательная статья, а что самое главное – новая.
гитарист
Июль 22, 2011 at 16:26
21спасибо за статью!!! оч полезна!
Как настроить в вордпрессе точно не знаю, лучше искать. Но тамкажись был плагин под названием redirection.
Saira19
Июль 23, 2011 at 15:40
22спасибо!!!!
очень полезная инфа!!!
Sveta
Июль 24, 2011 at 16:59
23Ответ Илье на “По 302-му редиректу страницы не клеятся и, соотв-но, вес не передается.” – Вес не передается, но передается траффик, что тоже важно.
Melianora
Август 14, 2011 at 08:54
24Спасибо , Интересная информация.. А вот все таки по вордпресс – можно ли какой нибудь обзорчик по плагинам редиректа ?