Drupal 301 редирект

301 redirect

Редирект 301 говорит о том что запрашиваемая страница навсегда переехала на новый адрес. При помощи 301 редиректа можно указать основное зеркало сайта с WWW или без. Также его используют при переводе сайта на https. Для этого достаточно дописать пару строк в файле .htaccess.

Ситуации, когда может понадобиться 301 редирект, бывают разные. Можно их условно разделить на две группы.

  1. Редирект для всех дублей сайта.
  2. Редирект для отдельных страниц.

Первый случай - вы забыли закрыть от индексации дубли страниц или же не надеетесь на robots.txt. Большое количество дублей в индексе поисковиков ещё никому не помогало. Количество редиректов в этом случае будет равно количеству страниц умноженное на два, такова особенность CMS. Для сайта со 100 страницами нужно прописать 200 редиректов.

Во втором случае редиректов нужно не так много. Редиректы для отдельных страниц могут понадобиться если вы решите вставить в URL ключевое слово или изменить название статьи, а вслед за названием изменится и адрес. Здесь, в отличии от первого варианта, мы не убираем страницы из дополнительного индекса, а возвращаем страницы которые уже приносят трафик и на которые возможные есть ссылки.

Чтобы не прописывать для каждого случая отдельное правило воспользуемся модулями. У Drupal для редиректов есть два модуля. Какой выбрать зависит от вашей ситуации.

Главное преимущество модулей - не нужно всё время лазить в .htaccess при добавлении/изменении адреса. Модуль сделает всё за нас.

Global Redirect.

Название говорит за себя. Модуль работает сразу со всем сайтом и предназначен для спасения от дублей.

После включения Global Redirect у вас будет редирект с системных и не чистых адресов на правильные синонимы. Если посетителя каким-то чудом занесёт на site.ru?q=node/1 он будет перенаправлен на site.ru/category/title.  Если не совсем понятно о чём говорю то почитайте статью про чистые правильные URL и синонимы.

Также по умолчанию стоит редирект с адресов оканчивающихся на слэш на страницы без слэша. Если вас это не устраивает, отключить можно на странице настроек. Найти эту страницу можно перейдя в меню конфигурация → система → глобальная переадресация. Настроек у модуля не много. Описаны они достаточно подробно. Хочу обратить ваше внимание на одну интересную опцию - "Проверка доступа к меню". Немного странное название. Смысл в том что при попытке обратиться к странице на которую пользователь не имеет права заходить он не будет перенаправляться. Делается это для того чтобы пользователь не получил какую нибудь информацию из адреса. Самый простой пример адрес страницы пользователя номер 1, который создаётся при установке сайта и обладает неограниченными полномочиями. По умолчанию Global Redirect при запросе адреса site.ru/user/1 перенаправит на страницу site.ru/users/admin_name. С включенной опцией "Проверка доступа к меню" пользователь так и останется на странице site.ru/user/1 и не узнает логин пользователя №1.

Redirect.

Модуль Redirect в отличии от предыдущего позволяет указывать редиректы для конкретных страниц. После установки, модуль сам будет отслеживать изменения URL и настраивать редирект со старых на новые, при условии что эта опция включена в настройках. Если же изменения происходили до включения модуля, то переходим  Конфигурация → Поиск и метаданные → Перенаправление адресов.

настраиваем 301 redirect в Drupal

На вкладке "список" жмём на ссылку добавить новый редирект и далее заполняем поля с какого на какой url ставить редирект. Дело за малым - найти все старые url отдающие 404 и направить их по новому адресу. Для этого на странице настроек модуля Redirect есть вкладка "исправление 404 страницы" Там перечислены все не найденные страницы к которым обращались посетители или боты. В списке может оказаться больше страниц чем нам нужно. Причина тому - боты отчаянно перебирающие варианты входа на ваш сайт.

Получить список страниц с 404 ошибкой можно у поисковых систем. В панели вебмастеров Гугла на странице Сканирование → Ошибки сканирования представлен полный список не найденных страниц. Переходим по ссылкам из этого списка. Кроме сообщения о ненайденной странице там будет ссылка на добавление редиректа. Кликнув по ней мы окажемся на той же странице, на которой оказались бы если делали добавление через вкладку "список". Поле откуда у нас уже будет заполнено осталось указать куда. Вот так без особых усилий можно решить вопрос с потерявшимися страницами.

На Drupal.org можно найти другие модули для редиректа. Например есть модуль который может редиректить по шаблону сразу несколько страниц. На мой взгляд те два модуля о которых было рассказано выше лучшее из того что есть.

А как вы настраиваете редирект? Модули или только .htaccess.

Добавлено пользователемPavelon вс, 07/05/2015 - 15:22

Здравствуйте, Олег!
Замечательная статья, спасибо за труды. Обязательно нужно воочию проверить как работают :)

> А как вы настраиваете редирект
В WordPress никак не отслиживаю, он кажется сам делает редиректы статьям, URL которых менялся.
А в самописной CMS`ке, есть два модуля - "LogError" и "Redirect". Первый отслеживает ошибки (404, 500, пр.). А используя второй, можно поставить редирект с любой страницы на любую.

У меня к Вам вопрос не потеме (соотетствующую не нашел).Как у Вас релаизовано выпадающее меню администратора?

модуль Administration menu очень удобно. Не нужно переходить по нескольким ссылкам, все настройки доступны в один клик.

Я наверное не правильно выразился. Как реализовать именно выпадающее меню и под меню? А то туллбар у меня отображается а при наведении курсора ничего не "выпадает". Я и подумал что для этого нужно устанавливать доп. модуль.