> For the complete documentation index, see [llms.txt](https://olexsyn.gitbook.io/enote/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://olexsyn.gitbook.io/enote/linux/nginx/301-redirekt-z-www.-ta-http-na-https-bez-www.-domain.md).

# 301 редирект з [www](http://www). та http: на https\://(без [www.)domain](http://www.\)domain)

В інтерфейсі керування VPS була відмічена галочка "Увімкнути автоматичний HTTPS редирект" (nginx.forcessl.conf\* - це воно?) і з http на https переходило, а налаштування з www на без\_www - такого налаштування не було. Можна було писати правила в `.htaccess`, але було цікаво, як налаштувати це на Nginx...

В **/etc/nginx/conf.d/domains** - мали лінки на Nginx-конфіги сайту (без та з ssl):

```
sitename.pp.ua.conf -> /home/cruad/conf/web/sitename.pp.ua/nginx.conf
sitename.pp.ua.ssl.conf -> /home/cruad/conf/web/sitename.pp.ua/nginx.ssl.conf
```

Ось ці файли зі скороченнями:

**nginx.conf**

```nginx
server {
    listen      185.111.111.45:80;
    server_name sitename.pp.ua www.sitename.pp.ua;
       error_log   /var/log/apache2/domains/sitename.pp.ua.error.log error;

       include /home/cruad/conf/web/sitename.pp.ua/nginx.forcessl.conf*;
...
       }
```

**nginx.ssl.conf**

```nginx
server {
    listen      185.111.111.45:443 ssl;
    server_name sitename.pp.ua www.sitename.pp.ua;
    error_log   /var/log/apache2/domains/sitename.pp.ua.error.log error;

    ssl_certificate     /home/cruad/conf/web/sitename.pp.ua/ssl/sitename.pp.ua.pem;
    ssl_certificate_key /home/cruad/conf/web/sitename.pp.ua/ssl/sitename.pp.ua.key;
    ssl_stapling    on;
    ssl_stapling_verify on;
...
    include /home/cruad/conf/web/sitename.pp.ua/nginx.hsts.conf*;
...   
    include /home/cruad/conf/web/sitename.pp.ua/nginx.ssl.conf_*;
}
```

**nginx.conf** підправляємо так, щоби запити на **http**://домен та **http**://**www**.домен булиь переправлені на **https**://домен:

```nginx
server {
    listen      185.111.111.45:80;
    server_name sitename.pp.ua www.sitename.pp.ua;
    return 301 https://sitename.pp.ua$request_uri;
}
```

В **nginx.ssl.conf** додаємо ще одну секцію `server` в якій запити на <https://www.домен> будуть переправлені на <https://домен>. В другій секції `server` в директиві `server_name` залишаємо тільки sitename.pp.ua ([www.sitename.pp.ua](http://www.sitename.pp.ua) - видаляємо)

```nginx
server {
    listen      185.107.237.45:443 ssl;
    server_name www.sitename.pp.ua;
    return 301 https://sitename.pp.ua$request_uri;
}

server {
    listen      185.107.237.45:443 ssl;
    server_name sitename.pp.ua;
    error_log   /var/log/apache2/domains/sitename.pp.ua.error.log error;

    ssl_certificate     /home/cruad/conf/web/sitename.pp.ua/ssl/sitename.pp.ua.pem;
    ssl_certificate_key /home/cruad/conf/web/sitename.pp.ua/ssl/sitename.pp.ua.key;
    ssl_stapling    on;
    ssl_stapling_verify on;
...
    include /home/cruad/conf/web/sitename.pp.ua/nginx.hsts.conf*;
...   
    include /home/cruad/conf/web/sitename.pp.ua/nginx.ssl.conf_*;
}
```
