Принудительно использовать WWW без WWW с Https на нескольких сайтах Nginx
У меня есть несколько сайтов, которые я бы хотел перенаправить на не www https. В настоящее время все выглядит хорошо, за исключением того факта, что когда вы вручную вводите https://www.example.com/ для любого из сайтов, он не перенаправляется, и вы попадаете на первый веб-сайт в алфавитном порядке. Я получаю различные ошибки при попытке сделать это. Моя текущая настройка включена: Главный сайт
server {
listen 80;
listen [::]:80 ipv6only=on;
server_name example.com www.example.com;
rewrite ^ https://example.com$request_uri? permanent;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2 default_server ipv6only=on;
}
Любой другой сайт
server {
listen 80;
server_name www.example.com example.com;
rewrite ^ https://example.com$request_uri? permanent;
}
server {
listen 443 ssl http2;
}
То, что я пытался перенаправить каждый сайт не по адресу https
server {
server_name example.com;
listen 443 ssl http2;
}
server {
listen 80;
server_name example.com www.example.com;
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl http2;
server_name www.example.com;
return 301 https://example.com$request_uri;
}
1 ответ
Я исправил это так:
Главный сайт:
server {
listen 80;
listen [::]:80 ipv6only=on;
server_name example.com www.example.com;
rewrite ^ https://example.com$request_uri? permanent;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2 ipv6only=on;
server_name www.example.com;
rewrite ^ https://example.com$request_uri? permanent;
}
server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
ssl_certificate /usr/local/nginx/ssl/nginx.crt;
ssl_certificate_key /usr/local/nginx/ssl/nginx.key;
server_name example.com;
root /home/example/public_html;
index index.php;
[... all stuff ...]
}
Все остальные сайты
server {
server_name www.example.com example.com;
rewrite ^ https://example.com$request_uri? permanent;
}
server {
listen 443 ssl http2;
ssl_certificate /usr/local/nginx/ssl/nginx.crt;
ssl_certificate_key /usr/local/nginx/ssl/nginx.key;
server_name example.com;
root /home/example/public_html;
index index.php;
[... all stuff ...]
}