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

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

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

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

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

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

Apache.

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

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

3 lines
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

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

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

Или:

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

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

Apache.

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

Nginx.

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

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

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

Apache.

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

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

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

Nginx.

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

Или:

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

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

Apache.

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

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

Nginx.

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

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

Apache.

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

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

Nginx.

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

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

Apache.

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

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

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

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

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

Nginx.

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

и

4 lines
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:

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

Nginx.

3 lines
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.

3 lines
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.

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

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

Apache.

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

Nginx.

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

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

Was this helpful?

0 / 0