Como Redirecionar www para Non-www com Nginx?

Publicado 27 de agosto de 2024

Configurando o Nginx para redirecionar www para non-www

Proprietários de sites frequentemente usam uma única versão de seu domínio para melhorar o SEO e a experiência do usuário. Redirecionar a versão www de um domínio para a versão non-www (ou vice-versa) é comum. Para usuários do Nginx, configurar esse redirecionamento requer uma configuração específica. Este artigo explica como redirecionar www para non-www usando Nginx, ajudando você a manter uma estrutura de domínio consistente para seu site.

Configurando o Nginx para Redirecionamento de www para Non-www

Criando um Bloco de Servidor para Redirecionamento

Para configurar um bloco de servidor para redirecionamento de www para non-www:

  1. Crie um novo arquivo de configuração:

    sudo nano /etc/nginx/sites-available/example.com
  2. Adicione este bloco de servidor:

    server {
       listen 80;
       server_name www.example.com example.com;
    
       # Outras configurações do servidor vão aqui
    }
  3. Use a diretiva server_name para especificar as versões www e non-www do seu domínio.

  4. Salve o arquivo e saia do editor de texto.

  5. Crie um link simbólico para ativar o site:

    sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
  6. Remova a configuração padrão do Nginx:

    sudo rm /etc/nginx/sites-enabled/default

Esta configuração forma a base para implementar o redirecionamento de www para non-www no Nginx.

Implementando o Redirecionamento 301 no Nginx

Escrevendo a Regra de Redirecionamento

Para redirecionar www para non-www usando Nginx, use a diretiva return com um código de status 301. Isso indica um redirecionamento permanente. Adicione esta regra ao seu bloco de servidor:

server {
    listen 80;
    server_name www.example.com example.com;
    if ($host = www.example.com) {
        return 301 $scheme://example.com$request_uri;
    }
    # Outras configurações do bloco de servidor
}

Esta regra verifica se o host solicitado é a versão www do seu domínio. Se for, ele redireciona para a versão non-www, mantendo o esquema original (http ou https) e quaisquer parâmetros de URL.

Testando a Configuração do Nginx

Após escrever a regra de redirecionamento, teste sua configuração do Nginx para erros:

  1. Execute este comando:

    sudo nginx -t
  2. Se não houver erros, você verá uma mensagem indicando que o teste de configuração foi bem-sucedido.

  3. Se houver erros, verifique seu arquivo de configuração e corrija quaisquer problemas.

Depois que o teste de configuração passar, recarregue o Nginx para aplicar as mudanças:

sudo systemctl reload nginx

Este comando recarrega o Nginx sem interromper conexões ativas. Seu redirecionamento de www para non-www deve agora funcionar. Teste-o visitando seu domínio www em um navegador web para confirmar que ele redireciona para a versão non-www.

Considerações Adicionais para Redirecionamento

Lidando com Conexões HTTPS

Para lidar com conexões HTTPS, configure certificados SSL e atualize seu bloco de servidor Nginx:

  1. Obtenha um certificado SSL para seu domínio.

  2. Instale o certificado SSL em seu servidor.

  3. Atualize seu bloco de servidor Nginx para suportar HTTPS:

server {
    listen 80;
    listen 443 ssl;
    server_name www.example.com example.com;

    ssl_certificate /caminho/para/seu/certificado.crt;
    ssl_certificate_key /caminho/para/sua/chave.key;

    if ($host = www.example.com) {
        return 301 https://example.com$request_uri;
    }

    if ($scheme != "https") {
        return 301 https://$host$request_uri;
    }

    # Outras configurações SSL e do servidor
}

Esta configuração redireciona o tráfego HTTP e HTTPS de www para non-www, e usa HTTPS para todas as conexões.

Configuração de DNS para Domínios www e Non-www

Para configurar o DNS para domínios www e non-www:

  1. Crie um registro A para seu domínio non-www (example.com) apontando para o endereço IP do seu servidor.

  2. Configure um registro CNAME para o subdomínio www (www.example.com) apontando para seu domínio non-www.

Exemplo de registros DNS:

example.com.     A     123.45.67.89
www.example.com. CNAME example.com.

Após fazer alterações no DNS, aguarde o tempo de propagação. Isso pode levar até 48 horas, mas geralmente ocorre em poucas horas. Use ferramentas online de consulta DNS para verificar o status de propagação do seu domínio.

Ao lidar com conexões HTTPS e configurar o DNS, você cria um sistema de redirecionamento seguro para seus domínios www e non-www.

Solucionando Problemas Comuns de Redirecionamento

Lidando com Loops de Redirecionamento

Loops de redirecionamento ocorrem quando redirecionamentos levam de volta à URL original, criando um ciclo. Para encontrar e corrigir redirecionamentos circulares:

  1. Use verificadores de redirecionamento online ou ferramentas de desenvolvedor do navegador para identificar loops.

  2. Verifique seus arquivos de configuração do Nginx em busca de regras de redirecionamento conflitantes.

  3. Procure por redirecionamentos em seu sistema de gerenciamento de conteúdo ou arquivos .htaccess.

Para encontrar problemas de redirecionamento nos logs do servidor:

  1. Acesse os logs de erro do Nginx:

    sudo tail -f /var/log/nginx/error.log
  2. Procure por entradas de redirecionamento repetidas ou mensagens de erro.

  3. Use ferramentas de análise de logs para identificar padrões no comportamento de redirecionamento.

Otimizando o Redirecionamento para Mecanismos de Busca

Para ajudar os mecanismos de busca a entender seus redirecionamentos:

  1. Use redirecionamentos 301 (permanentes) para www para non-www. Verifique isso na sua configuração do Nginx:

    return 301 $scheme://example.com$request_uri;
  2. Atualize seu sitemap XML:

    • Remova URLs www
    • Adicione URLs non-www
    • Envie o sitemap atualizado para os mecanismos de busca
  3. Altere seu arquivo robots.txt:

    • Use a versão non-www na diretiva Sitemap
    • Exemplo:
      Sitemap: https://example.com/sitemap.xml
  4. Use o Google Search Console para:

    • Definir sua versão preferida do domínio
    • Verificar erros de rastreamento relacionados a redirecionamentos

Ao corrigir loops de redirecionamento e otimizar para mecanismos de busca, você pode melhorar o desempenho do seu site e sua visibilidade nas pesquisas.