Перенаправление доменов

Перенаправление доменов

Хотел бы рассказать в своей теме «Перенаправление доменов» как можно перенаправить свой домен с  http://www.linux-notes.org на http://linux-notes.org а сделано это для  улучшения поисковых систем (оптимизация СЕО). Так как поисковые системы видят один и тот же домен, но с привязкой «www», как разные домены и могут иметь разные ТИЦ и PR. И сейчас я Вам покажу как можно это реализовать и сделать это можно легко.

В данной теме я озвучу как можно это сделать с помощью 301-го перенаправления и так же с помощью 302-го перенаправления, они само часто используются на данный момент.

1. Перенаправление 301

— 301 редирект c www на без-www

Apache.

Для того чтобы «соединить» эти два домена в один, я рекомендую использовать 301 редирект с дериктивой для этого mod_rewrite.

нужно открыть файл который лежит в домашнем каталоге вашего сайта с названием .htaccess и прописать:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.linux-notes.org $ [NC]
RewriteRule ^(.*)$ http://linux-notes.org/$1 [R=301,L]

Так что, http://www.linux-notes.org будет редиректить всех пользователей которые посещают ваш сайт и поисковых ботов на http://linux-notes.org.

Сейчас я расскажу более подробно о каждой строчке:

Директива RewriteEngine On подключает поддержку  функции mod_rewrite, нужно прописать ее в только в том случае если до этого не существовало ее в этом файле, а если она уже имеется, то пропускаем.

Строка RewriteCond %{HTTP_HOST} ^www.linux-notes.org $ [NC] проверяет соответствует ли домен «www.linux-notes.org», а знак ^ говорит что это начало строки, а $ — это конец строки. Параметр в скобках [NC] говорит о том, что регистр букв в адресной строке не учитывается.

Строчка RewriteRule ^(.*)$ http://linux-notes.org/$1 [R=301,L] — это  собственно сам редирект, где
параметр R=301 означает тип редиректа (301 Redirect, т.е. постоянный). L говорит о том, что это последнее правило.

Nginx.

Добавляем в виртуальный хост:

Например:

# vim /etc/nginx/conf.d/linux-notes.org.conf

И прописываем:

location / {
                     if ($http_host ~* "^www.linux-notes.org $"){
                                         rewrite ^(.*)$ http://linux-notes.org/$1 redirect;
                                         }
                   }

Или:

server {
         server_name www.linux-notes.org;
          return 301 $scheme://linux-notes.org$request_uri;
        }

Если необходимо перенаправлять всех пользователей на другой сайт без учета http, https, www:

Apache.

RewriteEngine On
RewriteRule ^.*$ http://www.linux-notes.org/launch/12?id=captain

Nginx.

Добавляем в виртуальный хост:

location / {
                    rewrite ^(.*)$ http://www.linux-notes.org/launch/12?id=captain redirect;
                   }

— 301 редирект c без-www на www

Apache.

Все тоже самое как в предыдущем примере, но в обратном порядке:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^linux-notes.org [NC]
RewriteRule ^(.*)$ http://www.linux-notes.or/$1 [L,R=301]

Надеюсь тут и так понятно все, так как описывал подробно немного выше.

Nginx.

location / {
                      if ($http_host ~* "^linux-notes.org"){
                                       rewrite ^(.*)$ http://www.linux-notes.or/$1 redirect;
                                       }
                   }

Или:

server {
               server_name linux-notes.org;
               return 301 $scheme://www.linux-notes.org$request_uri;
              }

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

Apache.

Например нужно вам перенаправить не весь сайт, на определенные его страницы, а можно сделать это:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.linux-notes.org [NC]
Redirect 301 /old.php http://linux-notes.org/new.php

Nginx.

location /old.php {
                                  rewrite ^(.*)$ http://linux-notes.org/new.php redirect;
                                }

—  301 редирект разрешения файлов

Apache.

Допустим, вы хотите поменять файлы «.html» на «.php», то можно это сделать:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.linux-notes.org [NC]
RedirectMatch 301 (.*).html$ http://linux-notes.org$1.php

Nginx.

location ~ (.*).html$ {
                         rewrite ^(.*)$ http://linux-notes.org$1.php redirect;
                       }

-301 Редирект всех файлов раздела на один файл.

Apache.

Допустим, вы не хотите использовать раздел сайта /Linux-OS и хотите направить все  запросы к папке /Linux-OS на один файл под названием  /Linux-OS.php:

RewriteEngine On
RewriteRule ^Linux-OS(.*)$ /Linux-OS.php [L,R=301]

Вам нужно сделать перенаправление всей папки, но  кроме какого то файла? В данном примере все файлы из папки /Linux-OS будут перенаправлены на на файл /Linux-OS.php, но допустим кроме файла /Linux-OS/CentOS.php который будет перенаправлен на /CentOS-Linux.php, то прописываем:

RewriteEngine On
RewriteRule ^Linux-OS/Linux-OS.php /CentOS-Linux.php [L,R=301]
RewriteRule ^Linux-OS(.*)$ /Linux-OS.php [L,R=301]

ВНИМАНИЕ! Строка (.*)$ должна быть последней, а то перенаправление может не работать или вообще будет карявым, сайт  может работать не правильно.

Nginx.

location /Linux-OS {
                                       rewrite ^/Linux-OS(.*)$ /Linux-OS.php redirect;
                                      }

и

location /Linux-OS {
                    rewrite ^/Linux-OS/Linux-OS.php /CentOS-Linux.php redirect;
                    rewrite ^/Linux-OS(.*)$ /Linux-OS.php redirect;
                   }

— 301 Редиректим динамическй URL на новый файл.

Apache.

Например, вы хотите перенаправить динамический URL с параметрами на новый статический файл. Допустим, запрос к файлу вида http://linux-notes.org/Linux-OS.php?id=666 будет перенаправлен на файл http://linux-notes.org/Linux-OS.php:

RewriteEngine On
RewriteRule ^Linux-OS.php?id=(.*)$ /Linux-OS.php [L,R=301]

Nginx.

location /Linux-OS {
                                       rewrite ^/Linux-OS.php?id=(.*)$ /Linux-OS.php redirect;
                                     }

Вот и все!

2. Перенаправление 302

Этот метод перенаправление похож на редирект 301, но в файл .htaccess нужно прописать нужные строки.

Для перенаправление страницы, используейте.

Apache.

Redirect /your-file-name.html http://www.linux-notes.org/temporary-directory/temporary-your-file-name.html

Nginx.

location /your-file-name.html {
                                rewrite ^(.*)$ http://www.linux-notes.org/temporary-directory/temporary-your-file-name.html redirect;
                               }

Для перенаправление дериктории, используейте.

Apache.

Redirect /directory http://www.linux-notes.org/temporary-directory

Nginx.

location /directory {
                                      rewrite ^(.*)$ http://www.linux-notes.org/temporary-directory redirect;
                                     }

Для перенаправление всего сайта, используейте.

Apache.

Redirect / http://www.linux-notes.org/

Nginx.

location / {
                    rewrite ^(.*)$ http://www.linux-notes.org/ redirect;
                     }

Перенаправление доменов завершено.

One thought on “Перенаправление доменов

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.