IT24

Как сделать 301-редирект с помощью htaccess

Как правильно сделать 301-редирект с помощью файла htaccess?

1. В .htaccess добавляем следующий блок кода:

    <IfModule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteEngine on
    </IfModule>	

2. Когда в ссылках сайта меняются сразу несколько параметров, редирект лучше делать с помощью регулярных выражений. Для этого используется директива RedirectMatch 301.

Тогда, если старые ссылки были вида:

http://site1.ru - корень сайта,

http://site1.ru/articles/ - папка со статьями

http://site1.ru/articles/statya-1.php - ссылка на конкретную статью

А новые ссылки должны выглядеть так:

https://site2.ru - корень нового сайта,

https://site2.ru/blog/ - статьи переименуются в блог,

http://site1.ru/articles/statya-1.html - ссылка на пост блога имеет расширение html,

то код 301-редиректа будет такой:

    <IfModule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteEngine on
    RedirectMatch 301 ^/$ https://site2.ru/
    RedirectMatch 301 ^/articles/$ https://site2.ru/blog/
    RedirectMatch 301 ^/articles/(.*)php$ https://site2.ru/blog/$1html
    </IfModule>

Если сайт посещаем и часто обходится ПС, то замена в поисковой выдаче старых ссылок на новые начнется уже через несколько дней. Сколько продлится перенос - зависит от объема контента.

Кстати, в Яндекс.Вебмастере есть специальный раздел “Переезд сайта”. В нем напрямую можно указать, на какой домен будет перенаправление.

Предварительно права на новый сайт должны быть подтверждены, а 301-редирект уже настроен.

Как сделать 301-редирект с www.site.ru на site.ru на https-протоколе

Код для .htaccess файла, чтобы перенаправлять с http на https и одновременно с www на без www.

<IfModule mod_rewrite.c>
	RewriteEngine On
	RewriteCond %{HTTPS} off
	RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
	RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
	RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L]
</IfModule>

Последнее изменение: