Как сделать 301 редирект страниц

301 редирект страницы — это ответ сервера, перенаправление с одного адреса на другой. Благодаря этому, можно перенаправлять пользователей, а также поисковые системы, со старого url адреса сайта на новый. Также 301 ответ сервера, указывает поисковым ботам, что сайт изменил свой адрес, а прежний адрес считается не актуальным.

Ниже рассмотрим варианты перенаправлений, двумя способами, первый способ, это редирект через файл htaccess, второй способ, это переадресация средствами nginx.

Настройка 301 редиректа страницы средствами .htaccess

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

Redirect 301 /page-1/ http://testsite.com/page-2/

Более расширенный вариант:

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/page/$
RewriteRule ^.*$ http://testsite.com/new-page/? [R=301,L]

301 редирект со всех страниц одного сайта на главную другого

RewriteEngine On
RewriteCond %{REQUEST_URI} (.*)
RewriteRule ^(.*)$ http://testsite.com/ [L,R=301]

301 редирект для всех страниц одного сайта, на точно такой же адрес другого

RewriteEngine On
RewriteCond %{REQUEST_URI} (.*)
RewriteRule ^(.*)$ http://testsite.com/$1 [L,R=301]

301 редирект со страницы сайта, на главную этого же сайта

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.testsite\.com$ [NC]
RewriteRule ^local-page/$ http://www.testsite.com/ [R=301,L]

301 редирект с главной страницы сайта на страницу этого же сайта

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.testsite\.com$ [NC]
RewriteRule ^$ http://www.testsite.com/local-page/ [R=301,L]

Примечание.
Правила в файле .htaccess, начинают работать сразу после добавления, поэтому нужно быть осторожным и внимательно проверять синтаксис, иначе можно получить ошибку 500 на сайте.

Переадресация средствами web-сервера nginx

Чтобы работала переадресация, nginx должен быть собран с модулем ngx_http_rewrite_module, по умолчанию, он устанавливается автоматически и всё должно работать “из коробки”.

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

      server {
...
          if ( $request_filename ~ page-old/ ) {
                   rewrite ^ http://www.testsite.com/page-new/? permanent;
              }
...
}

301 редирект для всех страниц одного сайта, на точно такой же адрес другого

server {
                server_name testsite.com www.testsite.com; 
                rewrite ^ $scheme://www.new-testsite.com$request_uri permanent;
}

301 редирект с одного домена, на другой

server {
            server_name testsite.com www.testsite.com; 
              rewrite ^ $scheme://www.new-testsite.com;
}

301 редирект домена и всех его поддоменов

server {
        ...
        server_name  testsite.com *.testsite.com;
        return 301 https://$host$request_uri;
      ...
}

Иногда страница доступна по двум адресам, /page/ и /page без слеша в конце. Для обычных пользователей это не будет являться проблемой, а вот для поисковых систем, это будут две разные страницы. Для избежание этого, можно добавить 301-редирект со всех страниц со слешем в конце, на страницу без слеша:

server {
    ...
    rewrite ^/(.*)/$ /$1 permanent;
    ...
}

Примечание.
После добавления правил в конфиг nginx, нужно проверить конфигурацию командой nginx -t и если всё в порядке, выполнить перезапуск сервиса командой service nginx restart или перезагрузить конфигурационный файл командой service nginx reload.

    Данный сайт использует cookie-файлы, систему Google Analytics для сбора детальной статистики о посетителях веб-сайта, а также собирает данные об IP-адресе и Вашем местоположении. Подробнее в нашей политике.
    Продолжая использовать данный ресурс, Вы автоматически соглашаетесь с использованием данных технологий.