Capa -> Linux -> Apache -> Redirecionar urls do carrinho de compras para HTTPS e todas as demais HTTP (sem SSL) / redirect all pages except checkout to HTTP non-SSL [regras no Apache]

Redirecionar urls do carrinho de compras para HTTPS e todas as demais HTTP (sem SSL) / redirect all pages except checkout to HTTP non-SSL [regras no Apache]

Olá,

Recentemente necessitei implantar um certificado SSL para que uma aplicação de um cliente tivesse conexão segura em seu site, no entanto, o HTTPS é somente necessário para operações com o carrinho de compras e/ou tráfego de dados confidenciais, não sendo necessário, por exemplo, para leitura de textos, etc.

O método mais inteligente é você sempre forçar o SSL [HTTPS] para as páginas de autenticação, cadastros e carrinho de compras e sempre forçar o HTTP (sem SSL) às demais páginas.

Tive de ler toda a documentação do mod_rewrite do Apache, mas tudo bem:

RewriteEngine On

RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_METHOD} !=POST
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(carrinho|login)  [NC]
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

O que o código acima, inserido no .htaccess da raiz da aplicação, faz? Se o usuário digitar https://www.dominio.com.br/produto/listar/32, por exemplo, automaticamente ele será redirecionado para a mesma url com HTTP (sem SSL), pois não se trata de uma url que contenha “/carrinho” ou “/login”.

Ficou faltando a url principal sempre ser forçada para HTTP em vez de HTTPS, pois nela, não há conteúdo confidencial para ser obrigatório o uso do SSL, logo adicionei o código:

RewriteCond %{HTTPS} on
RewriteCond %{QUERY_STRING} !^ACT= [NC]
RewriteCond %{REQUEST_METHOD} !=POST
RewriteCond $1 ^$  [NC]
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Agora, depois de inserir os dois códigos acima, vamos para o arquivo de configuração do VirtualHost no Apache e adicionar as seguintes linhas:

Redirect permanent /identificacao/novo-cadastro https://www.dominio.com.br/identificacao/novo-cadastro
Redirect permanent /carrinho https://www.dominio.com.br/carrinho

Bom, com o código acima no arquivo de configuração do Apache, toda vez que o usuário entrar no carrinho ou for se identificar, ele será forçado para o HTTPS e, nas demais páginas, será forçado para HTTP.

Abraços a todos.

Sobre Rodrigo Calado

Rodrigo Calado é graduado em Gestão da Tecnologia da Informação, pós-graduando em Governança de TI pela Universidade Católica de Brasília, co-fundador do Gran Cursos Online e da GG Educacional e pesquisador. Possui convicta paixão pela área de infraestrutura, ensino a distância, concursos públicos e empreendedorismo.

Deixe uma resposta

O seu endereço de email não será publicado. Required fields are marked *

*

Scroll To Top