Nginx - Redirecionando www para apenas o nome do domínio ou vice-versa
Dica publicada em Linux / Configuração
Nginx - Redirecionando www para apenas o nome do domínio ou vice-versa
Por questões de padronização, é comum você querer que seu domínio responda por apenas um subdomínio. Por exemplo, se alguém digitar:
www.meudominio.com
Redirecionar para:
meudominio.com
Ou vice-versa.
Também há a possibilidade de alguém tentar acessar uma página interna:
www.meudominio.com/contato
Então você precisa não só redirecionar o domínio, mas toda a requisição:
meudominio.com/contato
Para isso utilizaremos condicionais combinadas com o rewrite.
Edite o arquivo de configuração do Nginx e dentro da configuração de virtualhost do seu domínio, adicione as seguintes linhas:
Onde:
Se quiser fazer o inverso, que seria redirecionar "meudominio.com" para "www.meudominio.com", a configuração ficaria assim:
Reinicie o Nginx e seja feliz!
O VOL faz isso, redireciona "vivaolinux.com.br" para "www.vivaolinux.com.br". Podemos conferir usando o CURL:
curl -I https://vivaolinux.com.br/forum HTTP/2 301 cache-control: max-age=0, must-revalidate, no-cache, no-store content-type: text/html date: Tue, 30 Jun 2020 02:40:53 GMT display: staticcontent_sol expires: Mon, 29 Jun 2020 02:40:53 GMT location: https://www.vivaolinux.com.br/forum pagespeed: off response: 301 server: nginx/1.16.0 vary: Accept-Encoding vary: Origin,Accept-Encoding,X-APP-JSON x-ezoic-cdn: Miss x-middleton-display: staticcontent_sol x-middleton-response: 301 x-sol: pub_site
Até a próxima!
www.meudominio.com
Redirecionar para:
meudominio.com
Ou vice-versa.
Também há a possibilidade de alguém tentar acessar uma página interna:
www.meudominio.com/contato
Então você precisa não só redirecionar o domínio, mas toda a requisição:
meudominio.com/contato
Para isso utilizaremos condicionais combinadas com o rewrite.
Edite o arquivo de configuração do Nginx e dentro da configuração de virtualhost do seu domínio, adicione as seguintes linhas:
if ( $host ~* "^www\." ) {
rewrite ^(.*)$ $scheme://meudominio.com/${uri} permanent;
}
rewrite ^(.*)$ $scheme://meudominio.com/${uri} permanent;
}
Onde:
- host ~* "^www\." :: se o $host (nome de domínio) começar com "www.";
- rewrite ^(.*)$ :: reescreva toda a requisição ( ^ é início e $ é fim da string completa );
- scheme :: protocolo utilizado, por exemplo http, https etc;
- {uri} :: tudo o que vem depois do nome do domínio, como "/contato" por exemplo;
- permanent :: equivale ao HTTP 301, mover permanentemente.
Se quiser fazer o inverso, que seria redirecionar "meudominio.com" para "www.meudominio.com", a configuração ficaria assim:
if ( $host ~* "^meudominio.com" ) {
rewrite ^(.*)$ $scheme://www.meudominio.com/${uri} permanent;
}
rewrite ^(.*)$ $scheme://www.meudominio.com/${uri} permanent;
}
Reinicie o Nginx e seja feliz!
O VOL faz isso, redireciona "vivaolinux.com.br" para "www.vivaolinux.com.br". Podemos conferir usando o CURL:
curl -I https://vivaolinux.com.br/forum HTTP/2 301 cache-control: max-age=0, must-revalidate, no-cache, no-store content-type: text/html date: Tue, 30 Jun 2020 02:40:53 GMT display: staticcontent_sol expires: Mon, 29 Jun 2020 02:40:53 GMT location: https://www.vivaolinux.com.br/forum pagespeed: off response: 301 server: nginx/1.16.0 vary: Accept-Encoding vary: Origin,Accept-Encoding,X-APP-JSON x-ezoic-cdn: Miss x-middleton-display: staticcontent_sol x-middleton-response: 301 x-sol: pub_site
Até a próxima!