Как сделать редирект через .htaccess

Редиректы на сайте можно делать по разному, в этой статье как их сделать через .htaccess.

  1. редирект с www на без www

    RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
    RewriteRule ^ http%{ENV:protossl}://%1%{REQUEST_URI} [L,R=301]
  2. с без www на www

    RewriteCond %{HTTP_HOST} !^www\. [NC]
    RewriteRule ^ http%{ENV:protossl}://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
  3. простой 301 редирект с одной страницы на другую

    Redirect 301 /старый_урл_без_домена http://www.новый_урл_в_полном_виде.ru/
  4. убрать слеш из окончания урлов

    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_URI} ^(.+)/$ 
    RewriteRule ^(.+)/$ /$1 [R=301,L]
  5. редирект для страниц у которых в урле есть знак вопроса (index.php?id_article=25)

    RewriteCond %{QUERY_STRING} ^id_article=25$
    RewriteRule ^index\.php$ http://www.адрес_куда_делать_редирект/? [L,R=301]

    где id_article=25 уникальный идентификатор страницы

  6. если в урле знак вопроса идет сразу после слеша (blog/?id_article=25), то делать так:

    RewriteCond %{QUERY_STRING} ^id_article=25
    RewriteRule (.*) http://www.адрес_куда_делать_редирект/? [L,R=301]

    где id_article=25 уникальный идентификатор страницы