Почта:vova@vbeg.ru
Скайп:vova-beglecov

301 перенаправления через файл .htaccess

301 перенаправление - это перенаправление запроса с адреса A на адрес Б с сообщением системе (браузеру или поисковику) о том, что страница была перемещена на адрес Б постоянно. 301 перенаправления нужны в случае, если у страницы поменялся адрес, но доступ со старого адреса нужно сохранить.

Например, раньше статьи этого журнала имели адрес https://www.vova-beg.com/tezam/detail.php?id=15, но когда я поменял движок сайта со своего Управлятора на ModX Evo, статьи приобрели чпу-образные ссылки https://www.vova-beg.com/tezam/vkluchenie-pokaza-predyprejdenii-i-oshibok-v-php/. Так как в поисковике хранятся старые адреса статей, необходимо сделать доступность статей по старым адресам. Ниже рассмотрены основные способы перенаправлений.

Прежде всего не забудьте проверить, что у вас включён модуль перенаправлений и выставлен корневой адрес преобразований.

<IfModule mod_rewrite.c>
	RewriteEngine On
	RewriteBase /

	### Сюда добавляем код перенаправлений ###  
	
</IfModule>


Простое 301 перенаправление для адресов без GET-параметров
.
Минус такого способа в том, что он привязан к статическому указанию домена, что неудобно при отладке на тестовом сервере.
Redirect 301 /tezam/old-statia-1/ https://www.vova-beg.com/tezam/new-statia-1/
Redirect 301 /tezam/old-statia-2/ https://www.vova-beg.com/tezam/new-statia-2/
Redirect 301 /tezam/old-statia-3/ https://www.vova-beg.com/tezam/new-statia-3/


Простое 301 перенаправление для адресов без GET-параметров и без статичного указания домена
RewriteRule ^tezam\/old-statia-1\/$ /tezam/new-statia-1/? [R=301,L]
RewriteRule ^tezam\/old-statia-2\/$ /tezam/new-statia-2/? [R=301,L]
RewriteRule ^tezam\/old-statia-3\/$ /tezam/new-statia-3/? [R=301,L]


Перенаправление с GET параметрами.

В этом примере будет реализованов перенаправление для адресов /tezam/detail.php?id=6 на адрес /tezam/kommentirovanie-koda/ и т.п.
#Перенаправление для статьи 1
RewriteCond %{REQUEST_URI} /tezam/detail.php
RewriteCond %{QUERY_STRING} ^id=6$
RewriteRule ^.*$ /tezam/kommentirovanie-koda/? [R=301,L]

#Перенаправление для статьи 2
RewriteCond %{REQUEST_URI} /tezam/detail.php
RewriteCond %{QUERY_STRING} ^id=5$
RewriteRule ^.*$ /tezam/specialnie-simvoli-html/? [R=301,L]

#Перенаправление для статьи 3
RewriteCond %{REQUEST_URI} /tezam/detail.php
RewriteCond %{QUERY_STRING} ^id=1$
RewriteRule ^.*$ /tezam/css-haki-dlya-razlichnih-brayzerov/? [R=301,L]

Пример описывает перенаправления для адресов:
https://www.vova-beg.com/tezam/detail.php?id=6 перенаправляет на https://www.vova-beg.com/tezam/kommentirovanie-koda/
https://www.vova-beg.com/tezam/detail.php?id=5 перенаправляет на https://www.vova-beg.com/tezam/specialnie-simvoli-html/
https://www.vova-beg.com/tezam/detail.php?id=1 перенаправляет на https://www.vova-beg.com/tezam/css-haki-dlya-razlichnih-brayzerov/