Muitas vezes, bots de mecanismos de busca armazenam informações em cache sobre páginas do site, o que pode levar o usuário a uma página vazia ou forçá-lo a acessar via protocolo HTTP inseguro, em vez de HTTPS criptografado.
Para esses casos, existe o redirecionamento — que direciona o usuário de uma página para outro domínio ou endereço — e pode ser implementado em diferentes camadas. Neste material, mostramos as principais formas e situações!
Redirecionamento de HTTP para HTTPS
A conexão via protocolo HTTP já não é considerada segura há tempos, por isso muitos serviços adotaram o upgrade para HTTPS, com conexão criptografada.
Nos servidores Apache e Nginx, há regras que permitem gerenciar hosts virtuais e o servidor em geral. Para configurar o upgrade automático da URL de HTTP para HTTPS, acesse os arquivos de configuração do host virtual e adicione regras de redirecionamento:
Por padrão, o arquivo de configuração se chama default. Se no seu caso for diferente, substitua o nome. Adicione a seguinte configuração:
listen 80;
server_name example.com;
return 301 https://$host;
}
server {
listen 443 ssl;
ssl_certificate /etc/nginx/keys/subkeys/certificate.crt;
ssl_certificate_key /etc/nginx/keys/subkeys/private.key;
ssl_protocols TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
server_name example.com;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
}
Os hosts virtuais são divididos em blocos server, com regras de tratamento de tráfego. Se o primeiro bloco receber um pacote na porta 80 (HTTP), ele retorna um return 301, instruindo o navegador a acessar o site via HTTPS.
Além das configurações padrão, foi adicionado o cabeçalho Strict-Transport-Security, que informa ao navegador que ele deve forçar a conexão HTTPS. Essa medida mitiga ataques de downgrade HTTP, nos quais um atacante tenta forçar uma conexão insegura, sem autenticação e verificação de integridade — algo que o return 301 ajuda a prevenir.
Agora, vamos verificar se o redirecionamento está funcionando corretamente.
Redirecionamento interno
Se não quisermos enviar códigos de redirecionamento ao navegador, podemos utilizar o redirecionamento interno. O Nginx possui diversas diretivas que permitem tratar o tráfego internamente, sem que o usuário perceba. Exemplo:
listen 80;
server_name example.com;
location / {
internal_redirect @check_antivirus;
}
location @check_antivirus {
internal;
root /var/www/html
}
location /url {
internal_redirect /newurl;
}
location /newurl {
internal;
root /var/www/html
}
}
Neste exemplo, requisições feitas para / ou /url serão internamente redirecionadas para outro caminho, preservando o restante da URL. Por exemplo: uma chamada para /url/new/id?customer=675 será processada como /newurl/new/id?customer=675. Após ajustar o arquivo, valide a configuração com:
Redirecionamento via HTML/JS
Também é possível redirecionar no lado do cliente, usando HTML ou JavaScript.
<meta http-equiv="refresh" content="0;URL=http://site.ru" />
</head>
O navegador processa a instrução e recarrega a página para a URL especificada.
Esse código executa um redirecionamento direto. Ou com condição:
As possibilidades de tratar tráfego na web são amplas, desde HTML/JS no navegador até configurações em nível de servidor.
Para testar essas configurações com segurança, recomendamos usar um ambiente isolado — por exemplo, um servidor VPS em uma das plataformas da Serverspace, como vStack cloud ou VMware cloud.
Clique em Criar servidor, selecione a configuração ideal e inicie a instância.
Após o provisionamento, você pode acessar o servidor da forma que preferir.