1

I have multiple sites I'd like to redirect to non www https. Currently, all seems well other than the fact that when you manually input https://www.example.com for any of the sites, it doesn't redirect and you are brought to what seems like the first website in alphabetical order. I get various different errors when attempting to do so. My current setup is included: Main site

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;
}

Every other site

server {
    listen 80;
    server_name www.example.com example.com;
    rewrite ^ https://example.com$request_uri? permanent;
}
server {
    listen 443 ssl http2;
}

What I tried to redirect every site to non www 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 Answer 1

0

I fixed it like this:

Main site:

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 ...]
}

All other sites

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 ...]
}

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .