usando modrewrite para mudar http para https? (não redirecionar)

1

Isso pode parecer um pouco louco, mas nu comigo. Eu basicamente tenho um arquivo de inclusão, digamos inc-navigation.html , que tem caminhos absolutos ( http://www.pathtoimage.com/image.com ) que estão em CADA PÁGINA. Bem, usando SSL, eu não posso usar o mesmo arquivo de inclusão porque não está fazendo referência a https:// Que dor!

Então, eu estava pensando em usar o htaccess para fazer uma reescrita de todas as referências de HTTP para HTTPS quando o navegador solicita uma página https. Mais uma vez, só para ficar claro, não quero "redirecionar", apenas "substituir".

Então, eu tenho isso ...

RewriteCond %{HTTPS} !=on 
RewriteRule ^http$ https

mas não parece estar funcionando. Eu provavelmente tenho a sintaxe errada embora. :) Claro, isso é mesmo que esse tipo de coisa seja possível!?

    
por PaulHanak 03.09.2012 / 20:11

3 respostas

1

HTTPS é HTTP sobre SSL / TLS, que protege a camada de transporte, ou seja, a comunicação entre o navegador e o servidor da Web.

mod_rewrite reescreve solicitações internamente ou externamente por meio de redirecionamentos, mas somente quando a solicitação é enviada pelo navegador, o que é tarde demais no seu caso.

Se você quiser usar seu conteúdo normalmente hospedado em HTTP simples por meio de uma conexão HTTPS, poderá configurar um proxy reverso do host HTTPS para o host HTTP simples. mod_proxy_http , que é empacotado por padrão com o Apache 2.x, seria capaz de reescrever Location cabeçalhos no redirecionamento, mas não o conteúdo das próprias páginas (e seus links). Para fazer isso, você pode ter que olhar para mod_proxy_html , que deve ser capaz de reescrever os links nas próprias páginas.

Dito isto, ter links absolutos no seu arquivo inc-navigation.html soa como um erro de design, pode ser mais fácil fazer uma pesquisa / substituição para se livrar desses links absolutos nesse arquivo do que configurar mod_proxy_html . / p>

Se alguns dos links absolutos que você está usando apontarem para outros hosts, você poderá usar referências relativas do caminho da rede (começando com // , tornando o esquema relativo). Isso só funcionaria, é claro, se esses hosts fossem habilitados para HTTPS.

    
por 03.09.2012 / 21:53
1

Você não pode fazer isso porque precisa que o navegador da Web do visitante entenda que deve estar usando uma conexão segura (https) para buscar esses itens, e isso não é possível se você ocultar a nova localização do visitante (que é o que você faz quando usa o RewriteRule sem um redirecionamento).

Acho que sua melhor aposta é alterar o arquivo de inclusão para usar caminhos absolutos que não especificam um domínio ou protocolo. Em outras palavras, na alteração do arquivo de inclusão:

http://www.domainname.com/path/to/image/image.png

para

/path/to/image/image.png

em todos os lugares, esse padrão ocorre.

    
por 03.09.2012 / 20:45
0

Você tem a sintaxe um pouco errada, eis o que você precisa

 RewriteCond %{HTTPS} !on [NC]
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
    
por 03.09.2012 / 20:13