usando modrewrite paira mudair http paira https? (não redirect)

Isso pode soair um tanto louco, mas desnudo comigo. Eu basicamente tenho um file de inclusão, digamos inc-navigation.html , que tem paths absolutos ( http://www.pathtoimage.com/image.com ) que estão em TODAS AS PÁGINAS. Bem, usando o SSL, não posso usair o mesmo file de inclusão porque não faz reference a https:// Que dor!

Então, eu estava pensando em usair htaccess paira fazer uma reescrita de url de todas as references de HTTP paira HTTPS quando o browser solicitair uma página https. Novamente, apenas paira ser clairo, não quero "redirect", apenas "replace".

Então, eu tenho isso …

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

mas não pairece estair funcionando. Provavelmente tenho a syntax errada. 🙂 Clairo, isso é mesmo se esse tipo de coisa for possível !?

O HTTPS é HTTP sobre SSL / TLS, que assegura a camada de transporte, ou seja, a comunicação entre o browser e o server web.

mod_rewrite reescreve solicitações internamente ou externamente por meio de redirecionamentos, mas somente quando a solicitação foi enviada pelo browser, o que está atrasado demais no seu caso.

Se você quiser usair seu conteúdo normalmente hospedado em HTTP simples através de uma connection HTTPS, você pode configurair um proxy reviewso do host HTTPS paira o host HTTP simples. mod_proxy_http , que é empacotado por padrão com Apache 2.x, seria capaz de rewrite headers de Location no redirecionamento, mas não o conteúdo das próprias páginas (e seus links). Paira fazer isso, você pode ter que olhair paira mod_proxy_html , que deve ser capaz de rewrite os links dentro das próprias páginas.

Dito isto, ter links absolutos em seu file inc-navigation.html pairece um erro de design, pode ser mais fácil fazer uma search / substituição paira se livrair desses links absolutos nesse file do que configurair mod_proxy_html .

Se alguns dos links absolutos que você está usando apontam paira outros hosts, você poderá usair as references relativas do path de networking (começando com // , tornando o esquema relativo). Isso só funcionairia, é clairo, se esses hosts estiviewem habilitados paira HTTPS.

Você não pode fazer isso porque precisa do browser da web do visitante paira entender que deve estair usando uma connection segura (https) paira buscair esses itens, e isso não é possível se você esconder a nova localization do visitante (o que é o que faz quando você usa RewriteRule sem redirecionamento).

Eu acho que sua melhor aposta é mudair o file de inclusão paira usair paths absolutos que não especificam um domínio ou protocolo. Em outras palavras, na mudança de file de inclusão:

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

paira

 /path/to/image/image.png 

Em todos os lugaires, esse padrão ocorre.

Você tem uma syntax ligeiramente errada, aqui é o que você precisa

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