Redirecionar todos os URLs http e https não www para https://www.example.com via htaccess

5

Por motivos muito longos e complexos para entrar (envolve várias camadas de burocracia corporativa, fazendo com que alguém não compre um certificado SSL curinga que eu solicitei), tenho que configurar um domínio para redirecionar todas as solicitações para link - protocolo seguro com o subdomínio www .

EDIT: O certificado SSL é válido apenas para o domínio www.xyz.com.

Então: link , link e link TODOS devem redirecionar para o link .

Meu .htaccess-fu é fraco na melhor das hipóteses e não consigo fazer isso funcionar. Nota: a hospedagem é no Media Temple, se isso faz diferença.

Até agora, meu arquivo .htaccess é assim:

RewriteEngine On
RewriteCond %{HTTPS} !^on$
RewriteRule (.*) https://www.example.com/$1 [R,L]

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

O link e o link estão redirecionando para link , então sim. No entanto, o link não está redirecionando para o link e está lançando uma página de aviso de segurança:

This is probably not the site you are looking for!
You attempted to reach example.com, but instead you actually reached a server identifying itself as www.example.com. This may be caused by a misconfiguration on the server or by something more serious. An attacker on your network could be trying to get you to visit a fake (and potentially harmful) version of example.com.
You should not proceed, especially if you have never seen this warning before for this site.

Qualquer ajuda para me ultrapassar esta última corcunda seria muito apreciada!

    
por Scottie 14.07.2013 / 12:43

5 respostas

8

Você precisa de um certificado válido para example.com e www.example.com se for reescrever essas solicitações para www.example.com (ou dois certificados separados que realizam isso). Não há como evitar isso.

    
por 14.07.2013 / 12:47
5

@ Simbus82 está certo sobre inverter as regras. Aqui está uma abordagem que é um pouco mais universal.

RewriteEngine On
# ensure www.
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# ensure https
RewriteCond %{HTTP:X-Forwarded-Proto} !https 
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    
por 14.10.2015 / 18:16
1

Inverta as regras; -)

estou usando isso e tive seu problema

RewriteEngine On

RewriteCond %{HTTP_HOST} ^site.it [NC]
RewriteRule (.*) http://www.site.it/$1 [L,R=301]

RewriteCond %{SERVER_PORT} ^443$ [OR]
RewriteCond %{HTTPS} =on 
RewriteRule ^(.*)$ http://www.site.it/$1 [R=301,L]

Primeiro, reescreva para www e verifique https.

    
por 17.10.2014 / 15:56
1

Esta é uma questão muito complexa. A maioria dos tutoriais na internet lhe dirá, como o Simbus82, apenas inverter algumas linhas de código dentro do htacess. Isso nem sempre funcionará (especialmente se você tiver um equipamento de descarregamento de SSL na frente do Apache)

Você tem algumas opções para resolver o problema:

  • Use o link , serviço. Risco desta solução: dependendo de um terceiro. Ele funciona APENAS para solicitações HTTP redirecionadas para HTTPS, portanto, não há ajuda para redirecionar o link para link
  • Coloque um registro de "URL" em seu DNS, se seu registrador oferecer suporte a ele
  • Como MDMarra disse, compre um certificado HTTPS curinga (ou multi-domínio).

Não consigo explicar por quê, mas parece que o protocolo SSL verifica o problema do certificado de domínio / subdomínio, antes de manipular a solicitação para o Apache.

    
por 14.09.2015 / 15:55
0

Meu conhecimento sobre .htaccess também é fraco, mas e quanto a uma solução alternativa?

Você pode redirecionar todo o link para o link e tem um botão lá eles podem clicar em? Explique na página o que você está fazendo.

Você poderia até mesmo fazer um redirecionamento cronometrado em JavaScript ou algo assim?

    
por 01.06.2014 / 19:57