Справочный центр
Справочный центр: Работа с сайтом
Настройка 301 Moved Permanently в .htaccess
Отправлено Виталий Марков в 25 May 2015 14:49

301 Moved Permanently (Ресурс перемещен навсегда)— код состояния HTTP, сообщающий клиенту, что страница, к которой клиент обращается, перемещена по новому адресу и старый адрес следует считать устаревшим. Как правило, необходимость в передаче этого кода состояния возникает при обновлении и модернизации сайта (к примеру, при настройке 301 редиректа пользователи смогут получить доступ к материалам как по новым ссылкам, так и по старым) либо в случае поисковой оптимизации ресурса. Ниже мы подробно опишем процесс настройки 301 редиректа по тем или иным критериям.

Все указанные ниже директивы необходимо вносить в .htaccess того сайта, для которого вы хотите произвести настройку. Если вы только создали .htaccess или еще не редактировали его после загрузки, необходимо произвести синхронизацию .htaccess в панели управления для корректного действия директив.

Редирект со старой статической (чпу) страницы на новую страницу:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.test.pa.infobox\.ru$ [NC];
RewriteRule ^pages/oldpage/$ http://www. test.pa.infobox.ru/newpage/ [R=301,L]

Редирект на главную страницу:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.test.pa.infobox\.ru$ [NC];
RewriteRule ^support/test/$ http://www.test.pa.infobox.ru/ [R=301,L]

Редирект с главной на внутреннюю страницу:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.test.pa.infobox\.ru$ [NC];
RewriteRule ^$ http://www.test.pa.infobox.ru/support/test/ [R=301,L]

Редирект со страниц сайта с WWW на страницы без WWW:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.test.pa.infobox.ru$ [NC];
RewriteRule ^(.*)$ http://test.pa.infobox.ru/$1 [R=301,L]

Редирект со страниц сайта без WWW на страницы с WWW:

RewriteCond %{HTTP_HOST} ^test.pa.infobox.ru
RewriteRule (.*) http://www.test.pa.infobox.ru/$1 [R=301,L]

Редирект всех страниц с http:// на https://:

RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

301 редирект с index.php на главную:

RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/;
RewriteRule ^index\.php$ http://www.test.pa.infobox.ru/ [R=301,L]

Редирект URL с параметром на любую внутреннюю страницу сайта: (Например, со страницы http://test.pa.infobox.ru/? page_id=4 на http://test.pa.infobox.ru/? page_id=6 (здесь параметр page_id=)):

Options +FollowSymLinks;
RewriteEngine On
RewriteCond %{QUERY_STRING} page_id=4$;
RewriteRule .* http://test.pa.infobox.ru/?page_id=6 [R=301,L,NC]

Редирект URL с параметром на главную страницу сайта: (Например, http://test.pa.infobox.ru/? page_id=4  на главную страницу http://test.pa.infobox.ru/ (здесь параметр: page_id=4)):

Options +FollowSymLinks;
RewriteEngine On
RewriteCond %{QUERY_STRING} page_id=4$;
RewriteRule .* http://test.pa.infobox.ru/? [R=301,L,NC]

Редирект со старого домена на новый (прописываем в .htaccess старого сайта):

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.siteold\.ru$ [NC];
RewriteRule ^(.*)$ http://sitenew.ru/$1 [L,R=301];
RewriteCond %{HTTP_HOST} ^siteold\.ru$ [NC];
RewriteRule ^(.*)$ http://sitenew.ru/$1 [L,R=301]

301 редирект каталога (с каталога old_catalog на  new_catalog):

RedirectMatch 301 /old_catalog/(.*) /new_catalog/$1

Редирект с разных доменов и поддоменов:

RewriteCond %{HTTP_HOST} !^www\.site\.com;
RewriteRule ^(.*)$ http://www.site.com/$1 [R=301,L]

Таким образом, все домены типа www.site.ru, www.site.net, test.site.com будут переадресовываться на сайт www.site.com.

Как удалить несколько слешей/тире в URL:

Иногда в URL могут появиться по несколько слешей, например, www.site.com/catalog////page-1.html. В таких случаях необходимо делать 301 редирект на страницу с одним слешем www.site.com/catalog/page-1.html :

RewriteCond %{REQUEST_URI} ^(.*)//(.*)$;
RewriteRule . %1/%2 [R=301,L]

Генерация 301 редиректов

Если Вы не очень технически подкованы, то можно воспользоваться сервисами генерации базовых редиректов:

http://www.webconfs.com/htaccess-redirect-generator.php

http://www.rapidtables.com/web/tools/redirect-generator.htm

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

Как проверить 301 редирект

После каждого изменение логики работы 301 редиректа необходимо проверять работоспособность сайта:

  • работает ли сайт: зайти на главную страницу
  • обратиться к основным разделам и страницам сайта

Также для более тщательной проверки отработки редиректов можно использовать следующие сервисы:

http://bertal.ru — максимально подробная информация по ответам сервера.

http://www.internetmarketingninjas.com/header-checker/

(3 голосов)

© 2002—2017 ООО «Национальные телекоммуникации»