O redirecionamento de site funciona intermitentemente no Firefox, mas não funciona no IE [duplicado]
Depois de algumas tentativas de erro de redirecionamento de site, consigo realizar o redirecionamento de site, mas ele funciona intermitentemente no Firefox, mas não funciona no IE. Consigo limpar todo o cache e tentar novamente no Firefox e funciona, mas estranhamente não funciona depois disso. Eu confirmei que não estava fazendo nenhuma alteração em nenhum arquivo naquele momento. Alguém teve alguma ideia ou já enfrentou isso antes? Eu estava tãããão feliz que meu site finalmente redirecionou, mesmo eu fiquei feliz por 2 minutos, então descobri que não havia redirecionamento novamente. : (Eu só preciso redirecionar quando digito http://example.com ele redireciona para https://www.example.com Abaixo está meu redirecionamento no arquivo .htaccess:
RewriteEngine On
#Options +FollowSymLinks
RewriteCond %{HTTPS} !on [OR]
RewriteCond %{HTTP_HOST} ^example\.com$[OR]
RewriteCond %{HTTP_HOST} ^www\.example\.com$
RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,L]
Abaixo estão meus logs:
init rewrite engine with requested uri /
pass through /
[perdir D:/wamp64/www/example/] strip per-dir prefix: D:/wamp64/www/example/ ->
[perdir D:/wamp64/www/example/] applying pattern '.*' to uri ''
[perdir D:/wamp64/www/example/] RewriteCond: input='off' pattern='!on' => matched
[perdir D:/wamp64/www/example/] RewriteCond: input='www.example.com' pattern='^www\\.example\\.com$' => matched
[perdir D:/wamp64/www/example/] rewrite '' -> 'https://www.example.com/'
[perdir D:/wamp64/www/example/] explicitly forcing redirect with https://www.example.com/
[perdir D:/wamp64/www/example/] escaping https://www.example.com/ for redirect
[perdir D:/wamp64/www/example/] redirect to https://www.example.com/ [REDIRECT/301]
Também descobri que meu site só redireciona quando eu saio da VPN (preciso da VPN para poder me conectar ao servidor para consertar ou obter as informações que fiz para o redirecionamento)
Abaixo está o item que adicionei no arquivo .htaccess:
RewriteCond %{HTTPS} !on [OR]
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteCond %{HTTP_HOST] ^www\.example\.com$
RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,L]
Abaixo estão meus httpd-vhosts.conf:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot "d:/wamp64/www/example"
<Directory "d:/wamp64/www/example/">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Order allow,deny
Allow from all
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
</Directory>
</VirtualHost>
Meu certificado SSL foi configurado em httpd-ssl.conf, então aponto meu httpd-vhosts.conf como VirtualHost *: 80 Abaixo estão meus httpd-vhosts.conf:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot "d:/wamp64/www/example"
<Directory "d:/wamp64/www/example/">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Order allow,deny
Allow from all
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
</Directory>
</VirtualHost>
Atualizar
Abaixo está o que eu atualizo em .htaccess adicionando [OU]:
RewriteCond %{HTTPS} !on [OR]
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,L]
E abaixo estão os logs que consegui:
strip per-dir prefix: D:/wamp64/www/example/ ->
applying pattern '.*' to uri ''
RewriteCond: input='off' pattern='!on' => matched
rewrite '' -> 'https://www.example.com/'
explicitly forcing redirect with https://www.example.com/
escaping https://www.example.com/ for redirect
redirect to https://www.example.com/ [REDIRECT/301]
Tentei novamente no navegador, mas não foi redirecionado. Eu também tento depurar no firefox e o host que obtive é example.com
Isso é o que eu consegui removendo [OR]
RewriteCond %{HTTPS} !on
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,L]
Histórico:
RewriteCond: input='off' pattern='!on' => matched
RewriteCond: input='www.example.com' pattern='^example\\.com$' => not-matched
Por favor, me diga que meu redirecionamento está funcionando porque estou trabalhando nisso há meses e agora estou perdendo a ideia (espero que não seja por causa do meu erro bobo ... orando!). Por favor me ajude e agradeço antecipadamente!
Respostas
Eu acredito que você realmente não quer esta condição:
RewriteCond %{HTTP_HOST} ^www\.example\.com$
Porque isso causaria um loop de redirecionamento infinito para si mesmo, dado que é do .htaccessque se aplica à https://wwwversão também:
RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,L]
Eu acredito que é um personagem espacial ausente. Por favor, mude isso:
RewriteCond %{HTTP_HOST} ^example\.com$[OR]
para isso:
RewriteCond %{HTTP_HOST} ^example\.com$ [OR]
As entradas do arquivo de registro provaram que http://www.example.com foi reescrito com sucesso para https://www.example.com/ . Eles não provaram nada sobre http://example.com . Adicionar o caractere de espaço deve corrigir o último.
Em vez de mod_rewriteusar algo assim na definição do Virtualhost:
ServerName www.example.com
ServerAlias example.com
Redirect permanent / https://www.example.com/
De acordo com a documentação do Apache httpd .
mod_rewrite deve ser considerado um último recurso, quando outras alternativas forem consideradas insuficientes. Usá-lo quando existem alternativas mais simples leva a configurações que são confusas, frágeis e difíceis de manter.