Redirect (перенаправление) в .htaccess

Как добавить или убрать в адрес сайта www?

Некоторым вебмастерам архаичное www.* кажется очень даже симпатичным :)
Добавляется субдомен с помощью mod_rewrite в .htaccess, убрать приставку можно простым удалением в строке, где указан домен.

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^technohead.net[nc]
RewriteRule ^(.*)$ http://www.technohead.net/$1 [r=301,nc]

301 редирект. Перенаправление со старого URL на новый

Бывает такое, что мы ошибаемся в написании адресов страниц, это поправимо, даже когда уже на этой странице появился трафик. Делается 301 редирект с помощью директивы ниже. Данная цифра — http статус, который даст понять поисковой машине, что страница перемещена и это позволит сохранить вес страницы в поисковом индексе.

Redirect 301 /old_file http://www.technohead.net/new_file

Редирект из каталога в каталог

Похожая ситуация, как выше, только за исключением тогда нужно перенаправить посетителей из одной категории в другую. В адресной строке изменится папка, а конечное имя файла подставится после имени новой папки.

RedirectMatch 301 /old_dir(.*) /new_dir/$1

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

Если мы хотим убрать index.php после нашего домена, пользуемся подходом ниже. Тут так же приведен пример как перенаправить страницы, у которых в строке адреса есть знак вопроса. Для этих страниц, не работает простое Redirect 301.

RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} ^page=main
RewriteRule ^(.*)$ http://technohead.net/? [R=301,L]
RewriteCond %{QUERY_STRING} ^page=portfolio
RewriteRule ^(.*)$ http://technohead.net/? [R=301,L]

RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /index.php RewriteRule .* / [R=301,L]