Довольно часто бывает, что на сайте меняются URL адреса. Для того, чтобы не потерять позиции текущих страниц в поисковой выдаче, необходимо сообщить поисковой системе о том, что произошло изменение URL. Сделать это можно с помощью 301 редиректа.
301 первый редирект
1 вариант
Redirect 301 /test-1/ http://site.ru/test-2/
2 вариант
RewriteCond %{REQUEST_URI} ^/test/$ RewriteRule ^.*$ http://site.ru/new-test/? [R=301,L]
301 редирект с www на без www (главное зеркало – домен без www)
RewriteCond %{HTTP_HOST} ^www.(.*)$ RewriteRule ^(.*)$ http://%1/$1 [L,R=301]
301 редирект с без www на www (главное зеркало – домен с www)
RewriteCond %{HTTP_HOST} ^([^www].*)$ RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301]
301 редирект всех адресов с index.php и GET параметрами на страницы только с GET параметрами (вырезать в url index.php)
RewriteCond %{REQUEST_URI} /index.php RewriteRule ^(.*)$ http://site.ru/ [R=301,L]
Со страниц со слешем на конце на страницу без слеша на конце
RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} ![^\/]$ RewriteRule ^(.*)\/$ /$1 [R=301,L]
Со страниц без слеша на конце на страницу со слешем на конце
RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteRule ^(.*[^\/])$ /$1/ [R=301,L]