Как работает redirect301 на nginx?

Redirect 301 - это механизм перенаправления веб-трафика, который часто используется для перенаправления постоянных URL-адресов на другие страницы или сайты. В контексте Nginx, наиболее популярного веб-сервера, redirect 301 может быть настроен с использованием директивы "return" в блоке сервера или местного блока.

Перед тем, как подробно рассмотреть работу redirect 301 в Nginx, давайте разберемся, что означает 301. "301" в HTTP-статус-коде означает, что запрашиваемая страница была окончательно перемещена на новый адрес. Когда браузер получает ответ с этим кодом, он автоматически совершает новый запрос на новый адрес и обновляет закладки и ссылки.

В Nginx для настройки 301 перенаправления вы должны использовать блок "server" или блок "location" в файле конфигурации Nginx. Вот пример кода для создания перенаправления 301 в Nginx:

server {
    listen 80;
    server_name oldsite.com;
    return 301 http://newsite.com$request_uri;
}

В этом примере, когда Nginx получает запрос на oldsite.com, он отправляет 301 перенаправление на newsite.com с сохранением остальной части URL-адреса (request_uri). Это означает, что все подстраницы и параметры URL будут сохранены при перенаправлении.

Если вы хотите настроить несколько перенаправлений, вы можете использовать блок "location". Например:

server {
    listen 80;
    server_name oldsite.com;
    
    location /page1 {
        return 301 http://newsite.com/newpage1;
    }
    
    location /page2 {
        return 301 http://newsite.com/newpage2;
    }

    location / {
        return 301 http://newsite.com/;
    }
}

В этом примере, когда Nginx получает запрос на oldsite.com/page1, он отправляет 301 перенаправление на newsite.com/newpage1. Аналогично, oldsite.com/page2 перенаправлен на newsite.com/newpage2, а все остальные запросы перенаправлены на newsite.com.

Конфигурация перенаправления 301 может быть слегка отличаться в зависимости от вашей специфической ситуации и требований, но, в целом, это основы работы с redirect 301 в Nginx.