(044) 222-9-888
Поддержка абонентов: support@thehost.ua
Ваши отзывы и предложения: #feedback

2.12. 301 редирект через .htaccess

IMG ALT TEXT

301 редирект с одной страницы на другую

1.Самый простой вариант
Redirect 301 /test-1/ http://site.ru/test-2/

Более подробный
RewriteCond %{REQUEST_URI} ^/test/$ RewriteRule ^.*$ http://site.ru/new-test/? [R=301,L]

2.301 редирект с www на без www (главное зеркало – домен без www)
RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)$ http://%1/$1 [L,R=301]

В начале файла .htaccess нужно добавить:
RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

3.301 редирект с без www на www (главное зеркало – домен с www)
RewriteCond %{HTTP_HOST} ^([^www].*)$ RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301]

4.301 редирект со страниц со слешем на без слеша (весь сайт)
RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} ![^\/]$ RewriteRule ^(.*)\/$ /$1 [R=301,L]

5.301 редирект со страниц без слеша на слеш (часто в CMS системах устанавливается автоматически)
RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteRule ^(.*[^\/])$ /$1/ [R=301,L]

6.Один (а не два последовательных!) 301 редирект на без www и с слешем на конце адреса страницы
RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)$ http://%1/$1/ [L,R=301]

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

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

7.Один (а не два последовательных!) 301 редирект на c www и со слешем на конце адреса страницы
RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)$ http://www.%1/$1/ [L,R=301]

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

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

8.Один (а не два последовательных!) 301 редирект на c www и без слеша на конце адреса страницы
RewriteCond %{REQUEST_URI} ^\/$ RewriteCond %{HTTP_HOST} ^([^www].*)$ RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301]

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

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

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

9.Один (а не два последовательных!) 301 редирект на без www и без слеша на конце адреса страницы
RewriteCond %{REQUEST_URI} ^\/$ RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)$ http://%1/$1 [L,R=301]

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

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

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

10.301 редирект только адреса site.ru/index.php (без GET параметров) на основное зеркало site.ru
RewriteCond %{REQUEST_URI} /index.php RewriteCond %{QUERY_STRING} ^\z RewriteRule ^(.*)$ http://site.ru/? [R=301,L]

11.301 редирект всех адресов с index.php и GET параметрами на страницы только с GET параметрами (вырезать в url index.php)

Пример: перенаправление site.ru/index.php?n=1 на site.ru/?n=1
RewriteCond %{REQUEST_URI} /index.php RewriteRule ^(.*)$ http://site.ru/ [R=301,L]

12. 301 редирект url с GET параметрами (динамический URL) на статический
Вариант №1 (простой адрес с GET параметром):
RewriteCond %{QUERY_STRING} ^id=229 RewriteRule ^.*$ /supermodel/? [R=301,L]

Вариант №2 (со страницы и GET параметром)
RewriteCond %{REQUEST_URI} /test/ RewriteCond %{QUERY_STRING} ^id=229 RewriteRule ^.*$ /supermodel/? [R=301,L]

13.Все страницы одного домена на главную страницу другого домена
RewriteCond %{REQUEST_URI} (.*) RewriteRule ^(.*)$ http://site.ru/ [L,R=301]

14.Каждая страница одного домена на такой же адрес другого url
RewriteCond %{REQUEST_URI} (.*) RewriteRule ^(.*)$ http://site.ru/$1 [L,R=301]