Перенаправление URL (URL redirection)
Перенаправление URL (англ. URL redirection, URL forwarding, domain redirection, domain forwarding) — техника, применяемая для того, чтобы веб-страница была доступна под несколькими URL.
Слово редирект применяется в значениях:
- переадресация
- автоматическое (принудительное) перенаправление пользователя с одного веб-адреса на другую
SEO простое склеивание сайтов и редирект
Это абзац о склеивании сайтов, а не о настройке перенаправления с http на https!!
Если вы выбирали современного регистратора доменных имен, тогда вы можете использовать функцию URL Redirect Record в настройках DNS для создания 301, 302 ответа и не заморачиваться с настройкой редиректов. Ниже таблица какой сайт будет индексироваться при применении URL Redirect Record.
P.S. Для тех кто любит разбираться, сервис URL Redirect Record - это не функция DNS, это сам хостинг провайдер создает сайт и редиректит.
Сервис проверки HTTP заголовков сайта HTTP Status Codes Checker.
Перенаправление HTTP запросов на HTTPS
Apache
Если вы хотите запретить использование HTTP, то самым разумным будет перенаправлять все HTTP запросы к страницам на их HTTPS адрес. Чтобы добиться этого в Apache можно, например, организовать перенаправление с помощью mod_rewrite. Для этого сначала необходимо его активировать:
sudo a2enmod rewrite sudo service apache2 restart
Затем изменить файл /etc/apache2/sites-enabled/000-default, отвечающий за виртуальный хост по умолчанию для HTTP запросов. В этот файл надо добавить внутрь блока
<VirtualHost *:80> ... </VirtualHost>
строчки:
RewriteEngine On RewriteCond %{HTTPS} =off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [END,QSA,R=permanent]
При этом все настройки директорий можно удалить, поскольку по HTTP на ваши сайты всё равно будет не попасть. Всё, теперь ещё раз перезапустите Apache и убедитесь, что при заходе по HTTP вы автоматически перенаправляетесь на HTTPS страницу.
Nginx
Перенаправление HTTP запросов на HTTPS в Nginx оптимизация и использование делается так:
server { server_name dieg.info www.dieg.info; listen 80; if ($scheme = http) { rewrite ^ https://$server_name$request_uri? permanent; } }
301 редирект: с WWW на без WWW и наоборот
Apache
- С www на домен без WWW
RewriteEngine On RewriteCond %{HTTP_HOST} ^www.example.org$ [NC] RewriteRule ^(.*)$ http://example.org/$1 [R=301,L]
Если все работает в Server Response должен прийти ответ(заголовок) Коды состояния HTTP. Методы и структура протокола HTTP
HTTP/1.1 301 Moved Permanently
на запрос домена с www.
- С домена на домен с WWW
RewriteEngine On RewriteCond %{HTTP_HOST} ^example.org RewriteRule (.*) http://www.example.org/$1 [R=301,L]
Apache глобальное перенаправление (редирект)
- Глобальное перенаправление (редирект) на другой адрес:
Redirect / http://www.newsite.ru
или
Redirect 301 / https://www.newsite.ru
- Перенаправление (редирект) только при запросе определенных страниц:
Redirect 301 /company http://www.newsite.com/newcompany Redirect 301 /forum http://www.newsite.com/newforum
При запросе страниц из каталогов company и forum будет произведено перенаправление на новые адреса.
В ряде случаем полезно использовать такой редирект В ряде случаев полезна переадресация через
RewriteRule ^dir /dir-new/$1 [R=301,L]
вместо директивы Redirect
Nginx редирект на другую страницу и глобальный редирект
Нам может понадобиться перенаправлять запросы с одной страницы сайта на другую. Приведем примеры, как это сделать с помощью return и rewrite для веб-сервера Nginx.
а) с помощью rewrite:
server { ... rewrite ^/page1$ /page2 permanent; }
б) с помощью return:
server { ... location = /page1 { return 301 /page2; } }
Для того, чтобы задать глобальное перенаправление (редирект) с одного домена на другой лучше использовать rewrite, без location, как в примере ниже:
server { ... listen IP:80; server_name source_domain.ru; rewrite ^ http://target_domain.ru$request_uri; ... }
здесь вместо source_domain.ru нужно подставить имя домена, с которого нужно редиректить, а вместо target_domain.ru - имя домена, на который редиректить.
HTML редирект или метаредирект
HTML редирект – это соответствующий мета-тег с некоторыми параметрами и значениями. Синтаксис
<meta http-equiv="refresh" content="seconds;URL-to-redirect">
Мета-тег с редиректом прописывается в секции <head> </head>. Параметр content="" со значением 1 определяет перенаправление через 1 секунду и т.п. После URL= вводится адрес перенаправления с текущей страницы.
Рабочий пример метаредиректа. Посетитель не заметит что произошло перенаправление, так как мы установим для этого задержку в ноль секунд.
Пример Javascript редирект через document.location и метаредиректа
- index.php
<html> <head> <meta name="robots" content="noindex, nofollow"> <meta http-equiv="refresh" content="0;url=https://wiki.dieg.info"/> </head> <body> <script language="javascript" type="text/javascript"> document.location='https://wiki.dieg.info'; </script> </body> </html>
Читайте также
- Сервис проверки HTTP заголовков сайта HTTP Status Codes Checker.


