Инструменты пользователя

Инструменты сайта


url_redirection

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

url_redirection [2019/12/03 12:12]
url_redirection [2020/06/13 13:47] (текущий)
Строка 1: Строка 1:
 +====== URL redirection ======
  
 +{{htmlmetatags>
 +metatag-description=(Всё о 301 редиректе. Примеры настройки и использование 301 редиректа)
 +}}
 +
 +
 +**Перенаправление URL** (англ. URL redirection, URL forwarding, domain redirection, domain forwarding) — техника, применяемая для того, чтобы веб-страница была доступна под несколькими URL.
 +
 +Слово **редирект** применяется в значениях:
 +  * переадресация
 +  * автоматическое (принудительное) перенаправление пользователя с одного веб-адреса на другую
 +
 +  * [[Website Hosting]] корпоративный хостинг на основе LAMP
 +  * [[Модули Apache]](apxs): mod_wsgi, mod_status, mod_rewrite и др.
 +  * [[http://alaev.info/blog/post/4393|Redirect 301 – теория и практика редиректа, настройка и правила использования]]
 +  * [[https://moz.com/blog/301-redirection-rules-for-seo|301 Redirects Rules Change: What You Need to Know for SEO]] - весь вес страницы передается, но использовать надо разумно и умеренно.
 +  * [[http://web-optimizator.com/301-redirekt-htaccess/|301 редирект (переадресация) через .htaccess – на все случаи жизни]]
 +
 +====== Перенаправление HTTP запросов на HTTPS ======
 +
 +===== Apache =====
 +
 +Если вы хотите запретить использование HTTP, то самым разумным будет перенаправлять все HTTP запросы к страницам на их HTTPS адрес. Чтобы добиться этого в [[Apache]] можно, например, организовать перенаправление с помощью mod_rewrite. Для этого сначала необходимо его активировать:
 +<file>
 +sudo a2enmod rewrite
 +sudo service apache2 restart
 +</file>
 +Затем изменить файл /etc/apache2/sites-enabled/000-default, отвечающий за виртуальный хост по умолчанию для HTTP запросов. В этот файл надо добавить внутрь блока
 +<file>
 +<VirtualHost *:80>
 +...
 +</VirtualHost>
 +</file>
 +строчки:
 +<file>
 +        RewriteEngine On
 +        RewriteCond %{HTTPS} off
 +        RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
 +</file>
 +При этом все настройки директорий можно удалить, поскольку по HTTP на ваши сайты всё равно будет не попасть.
 +Всё, теперь ещё раз перезапустите Apache и убедитесь, что при заходе по HTTP вы автоматически перенаправляетесь на HTTPS страницу.
 +
 +  * [[let_s_encrypt#pravila_301_redirekt_letsencrypt|Правила 301 редирект от letsencryp (certbot)]]
 +===== Nginx =====
 +
 +Перенаправление HTTP запросов на HTTPS в [[Nginx]] делается так:
 +<file bash>
 +server {
 +
 +server_name dieg.info www.dieg.info;
 +listen 80;
 +
 +if ($scheme = http) {
 +rewrite ^ https://$server_name$request_uri? permanent;
 + }
 +}
 +</file>
 +
 +====== 301 редирект: с WWW на без WWW и наоборот ======
 +
 +  * С www на домен без WWW<file>
 +RewriteEngine On
 +RewriteCond %{HTTP_HOST} ^www.example.org$ [NC]
 +RewriteRule ^(.*)$ http://example.org/$1 [R=301,L]
 +</file>Если все работает в Server Response должен прийти ответ(заголовок) [[HTTP]]<file>
 +HTTP/1.1 301 Moved Permanently
 +</file>на запрос домена с www.
 +  * С домена на домен с WWW<file>
 +RewriteEngine On
 +RewriteCond %{HTTP_HOST} ^example.org
 +RewriteRule (.*) http://www.example.org/$1 [R=301,L]
 +</file>
 +
 +====== Apache глобальное перенаправление (редирект) ======
 +  * [[https://httpd.apache.org/docs/current/mod/mod_alias.html#redirect|Redirect Directive]]
 +
 +  * Глобальное перенаправление (редирект) на другой адрес:<file>
 +Redirect / http://www.newsite.ru
 +</file>или<file>
 +Redirect 301 / https://www.newsite.ru
 +</file>
 +  * Перенаправление (редирект) только при запросе определенных страниц:<file>
 +redirect /company http://www.newsite.com/newcompany
 +redirect /forum http://www.newsite.com/newforum
 +</file>При запросе страниц из каталогов company и forum будет произведено перенаправление на новые адреса.
 +
 +====== HTML редирект или метаредирект ======
 +HTML редирект – это соответствующий мета-тег с некоторыми параметрами и значениями. Синтаксис <file html>
 +<meta http-equiv="refresh" content="seconds;URL-to-redirect">
 +</file>
 +
 +Мета-тег с редиректом прописывается в секции <head> </head>. Параметр content="" со значением 1 определяет перенаправление через 1 секунду и т.п. После URL= вводится адрес перенаправления с текущей страницы.
 +
 +Рабочий пример метаредиректа. Посетитель не заметит что произошло перенаправление, так как мы установим для этого задержку в ноль секунд.<file html index.php>
 +<html>
 +
 +<head>
 +
 +<meta http-equiv="refresh" content="0;url=https://wiki.dieg.info"/>
 +
 +</head>
 +<body>
 +</body>
 +</html>
 +</file>
 +===== Пример Javascript  редирект через document.location и метаредиректа =====
 +
 +<file html index.php>
 +<html>
 +
 +<head>
 +
 +<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>
 +</file>