Como fazer o htaccess não redirecionar para http no envio do formulário

2

Parte do arquivo .htaccess força https em determinadas páginas (por exemplo, quando o usuário faz login, insere informações de cartão de crédito etc.) enquanto força http em todas as outras páginas. Esta parece ser a configuração ideal para o que eu preciso.

No entanto, uma das extensões do meu site é responsável por gerar um formulário de processamento de cartão de crédito. No URL de ação do formulário, ele contém o URL https da raiz da Web (por exemplo, link ). No entanto, a raiz da Web não é uma dessas páginas em que o .htaccess força https , portanto, está forçando um redirecionamento para http . Por causa disso, a extensão está falhando porque o formulário está tentando enviar para um https que redireciona para http .

O que devo fazer? Eu não quero que os usuários sejam forçados a ver uma página protegida quando não precisam; Eu prefiro que eles colham os benefícios do cache. E, obviamente, em páginas seguras, eles precisam se submeter a URLs seguras (o CMS do meu site aparentemente funciona de tal forma que todos os envios de formulários para a raiz da Web funcionam muito bem). Não posso dizer à extensão para enviar para um URL diferente.

Aqui está a parte relevante do meu .htaccess:

<IfModule mod_rewrite.c>

   RewriteEngine On

   # Define default protocol for all assets
   RewriteRule ^ - [E=protocol:http,E=ssl:%{HTTPS}off]

   # Define HTTPS targets, add more cond as required
   RewriteCond $1 (payment|sign-in|sign-up) [NC]
   RewriteRule (.*) - [E=protocol:https,E=ssl:%{HTTPS}on]

   # Rewrite host if necessary and redirect on correct protocol
   RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
   RewriteRule ^ %{ENV:protocol}://%1%{REQUEST_URI} [L,R=301]

   # Protocol switch if necessary (host is already correct)
   RewriteCond %{ENV:ssl} ^(onoff|offon)
   RewriteCond %{REQUEST_URI} !\.(gif|jpe?g|png|css|js)$ [NC]
   RewriteRule ^ %{ENV:protocol}://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

   # Finally, process the internal redirect
   RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteRule ^(.*)$ /index.php/$1 [L]

</IfModule>

Talvez isso possa ser modificado para "não redirecionar se for um envio de formulário"

    
por StackOverflowNewbie 08.07.2014 / 13:13

1 resposta

3

Na minha opinião, você está otimizando a coisa errada, forçando certas páginas a usar HTTPS e outras para usar HTTP simples. Basta redirecionar tudo para HTTPS e acabar com isso.

O custo computacional de HTTPS é insignificante na maioria dos casos.
Sua preocupação com o cache do navegador com SSL parece infundada também.

E o meu animal de estimação incomoda: é melhor você incluir sua configuração no arquivo httpd.conf principal, em vez de depender dos arquivos .htaccess, de acordo com o manual .

    
por 08.07.2014 / 16:09