Различия

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

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

Следующая версия
Предыдущая версия
nginx:redirect-www [2016/01/31 12:13] – создано mirocownginx:redirect-www [2024/02/09 01:51] (текущий) mirocow
Строка 1: Строка 1:
 +{{tag>nginx server triks route alias}}
 +
 ====== Создание редиректа на домен с www ====== ====== Создание редиректа на домен с www ======
  
 Выполняем редирект с домена без www Выполняем редирект с домена без www
  
-<code>+  * https://www.cyberciti.biz/faq/how-to-redirecting-non-www-to-www-in-nginx-with-ssltls-http/ 
 + 
 +<code nginx>
 server { server {
     listen [[IP]]:80;     listen [[IP]]:80;
     server_name [[DOMAIN]];     server_name [[DOMAIN]];
-    return 301 http://www.[[DOMAIN]]$request_uri;+    return 301 $scheme://www.[[DOMAIN]]$request_uri;
 } }
 </code> </code>
Строка 13: Строка 17:
 на домен с www на домен с www
  
-<code>+<code nginx>
 server { server {
-                listen [[IP]]:80; +    listen [[IP]]:80; 
-                server_name www.[[DOMAIN]]; +    server_name www.[[DOMAIN]]; 
-                root /home/[[DOMAIN]]/httpdocs;+    root /home/[[DOMAIN]]/httpdocs;
 } }
 </code> </code>
 +
 +===== Nginx, 301 редирект с http на https протокол =====
 +
 +Если у вас на сайте есть SSL сертификат для домена, то вы можете настроить https протокол. После чего для 301-го редиректа вам необходимо добавить следующий код в файл конфигурации nginx для домена:
 +
 +<code nginx>server {
 +    #...
 +    if ($scheme = http) {
 +        return 301 https://$server_name$request_uri;
 +    }
 +}</code>
 +или
 +
 +<code nginx>server {
 +    #...
 +    listen  server_ip:80;
 +    server_name  www.devreadwrite.com;
 +    rewrite ^ https://www.devreadwrite.com$request_uri? permanent; 
 +}</code>
 +
 +===== Nginx, 301 редирект с https на http протокол =====
 +
 +Обратный пример конфигурации для редиректа с http на https:
 +
 +<code nginx>server {
 +   listen  443;
 +   server_name  www.devreadwrite.com;
 +   rewrite ^ http://www.devreadwrite.com$request_uri? permanent; 
 +}</code>
 + 
 +<code nginx>server {
 +    listen  80;
 +    server_name www.devreadwrite.com;
 +    #...
 +}</code>
 +
 +===== Nginx, 301 редирект с www на без www =====
 +
 +Пример 301-го редиректа на основное зеркало без www:
 +
 +<code nginx>server {
 +    #...    
 +    if ($host ~* www\.(.*)) {
 +        set $host_without_www $1;
 +        rewrite ^(.*)$ http://$host_without_www$1 permanent;
 +    }
 +}</code>
 +
 +или
 +
 +<code nginx>server {
 +    #...
 +    server_name www.devreadwrite.com;
 +    rewrite ^/(.*)$ http://devreadwrite.com/$1 permanent;
 +}</code>
 +
 +===== Nginx, 301 редирект с без www на с www =====
 +
 +Обратный пример 301-го редиректа на основное зеркало сайта с www:
 +
 +<code nginx>server {
 +    #...
 +    server_name devreadwrite.com;
 +    rewrite ^/(.*)$ http://www.devreadvrite.com/$1 permanent;
 +}</code>
 + 
 +<code nginx>server {
 +    listen  80;
 +    server_name www.devreadvrite.com;
 +    #...
 +}</code>
 +
 +===== Nginx, 301 редирект для одной страницы =====
 +
 +Если у страницы поменялся URL, то лучше сделать 301 редирект на новый URL:
 +
 +<code nginx>server {
 +    #...
 +    if ( $request_filename ~ oldpage/ ) {
 +        rewrite ^ http://www.devreadvrite.com/newpage/? permanent;
 +    }
 +    #...
 +}</code>
 +
 +===== Nginx, 301 редирект для папки =====
 +
 +Аналогичный пример 301-го редиректа для папки:
 +
 +<code nginx>server {
 +    #...
 +    if ( $request_filename ~ oldfolder/.+ ) {
 +        rewrite ^(.*) http://www.devreadvrite.com/newfolder/$1 permanent;
 +    }
 +    #...
 +}</code>
 +
 +===== Nginx, 301 редирект с одного домена на другой =====
 +
 +Если вы сменили домен сайт и хотите перенести вес старого домена на новый, то можно сделать 301-й редирект со старого домена на новый:
 +
 +<code nginx>server {
 +    server_name domain.com www.devreadvrite.com; 
 +    rewrite ^ $scheme://www.new-devreadvrite.com;
 +}</code>
 +
 +===== Nginx, 301 редирект с каждой страницы одного домена на такой же URL адрес другого домена =====
 +
 +Если вы планируете изменить свой домен или изменить название предприятия, то перенаправление домена является единственным лучшим решением для сохранения пользователей и перевода их запросов на новый домен.
 +
 +<code nginx>server {
 +    server_name devreadvrite.com www.devreadvrite.com; 
 +    rewrite ^ $scheme://www.new-devreadvrite.com$request_uri permanent;
 +}</code>
 +
 +===== Nginx, 301 редирект со страниц со слешем на страницы без слеша в конце URL =====
 +
 +Часто бывает так что одна и та же страница доступна по двум URL, например /may-best-page и /my-best-page/, если человеку понятно что это одна и та же страница, то поисковые системы понимают это как две разные страницы, соответственно разбивают вес страницы, а также показываются в аналитике (статистике) как 2 разные страницы. Для того, что бы избежать этого вы можете сделать 301 редирект со страниц со слешем в конце URL на без него:
 +
 +<code nginx>server {
 +    #...
 +    rewrite ^/(.*)/$ /$1 permanent;
 +    #...
 +}</code>
 +
 +===== Nginx, 301 редирект со страниц без слеша на страницы со слешем в конце URL =====
 +
 +Причина делать такой редирект та же, что и в ситуации описанным выше, за исключением того, что редирект необходимо делать со страницы без слеша в конце URL на страницу со слешем в конце URL:
 +
 +<code nginx>server {
 +    #...
 +    rewrite ^(.*[^/])$ $1/ permanent;
 +    #...
 +}</code>