Essa configuração faz o que você pergunta:
server {
listen 80;
listen [::]:80;
server_name www.example.com example.com;
# redirects both www and non-www to https
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name www.example.com;
include snippets/ssl-example.com.conf;
include snippets/ssl-params.conf;
# redirects www to non-www
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example.com;
include snippets/ssl-example.com.conf;
include snippets/ssl-params.conf;
charset utf-8;
# rest of my config
}
Alterei rewrite
para return
, pois isso é um pouco mais eficiente.
Com return
, é necessário usar $request_uri
para obter o caminho e os argumentos da solicitação no URL de redirecionamento.
Em seguida, alterei o bloco server_name example.com;
with listen 443;
para exibir o conteúdo real do site e server_name www.example.com;
com listen 443;
para redirecionar.