Redirecione todas as http: // solicitações para https: //

22

No início, eu postei esta pergunta: /programming/36104047/how-to-redirect-all-http-requests-to-https-on-magento, mas não obtive nenhuma reação.

Aqui está o URL do meu site: www.trendy-mode.nl, ele será redirecionado para: https://www.trendy-mode.nl/

Agora, o problema é o link do menu ou qualquer outro sub-link não é redirecionado com o https://

EX:
Existe um menu como - NIEUW | KLEDING SCHOENEN ACESSÓRIOS, etc.
Se você clicar no menu NIEUW, uma nova página será aberta, mas não será redirecionada comhttps://

Eu tentei muitos ajustes .htaccess, mas não funciona. Alguém aqui para me ajudar nisso?

Agradeço antecipadamente!

Abhishek Kumbhani
fonte

Respostas:

30

Alterar o URL de base não seguro para https altera todos os links e redireciona solicitações não https para https://example.com/ (a página inicial), porque é isso que o Magento faz quando a validação do URL de base falha.

Portanto, este é um bom começo, mas também para redirecionar http://example.com/foo/ para https://example.com/foo/, você precisa fazer isso através do redirecionamento do servidor da web.

Por exemplo, adicione o seguinte código na parte superior do seu .htaccess:

RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]

Ou se você usar um proxy reverso como o Varnish:

RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]

Isso ocorre porque as solicitações do Varnish para o Magento serão sem SSL (HTTP), mas o Varnish define o cabeçalho X-Forwarded-Proto como "https" se a solicitação original foi feita com SSL (HTTPS).

Fabian Schmengler
fonte
@Abhishek Acabei de testar seu site e, como ele ainda não está funcionando - as instruções Fabians acima estão corretas .. mas também devemos dizer que essas duas linhas devem ser adicionadas ao arquivo .htaccess na raiz da instalação do magento, mas NÃO na parte superior (geralmente ), mas conforme mencionado abaixo, logo depois RewriteEngine On. O jeito que eu fiz isso é um pouco diferente na minha segunda linha; RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Peter Svegrup 22/03
Alguém experimentou efeitos adversos no page rank do google depois de mover um site magento completamente para https?
paj
10

Para completar, também fazemos algo muito semelhante ao que fschmengler sugeriu com algumas adições;

RewriteCond %{HTTP:X-Forwarded-Proto} !=https
RewriteCond %{HTTPS} !=on
RewriteCond %{REQUEST_METHOD} !=POST
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Colocamos isso dentro da seção do .htaccess logo abaixo RewriteEngine On

Smartie
fonte
9

Defina seu URL base para segurança e insegurança no back-end. Defina yes ao usar o URL seguro no front-end no back-end.

Em seguida, edite seu aplicativo / etc / local.xml e inclua este

<?xml version="1.0"?>
<config>
  <frontend>
     <secure_url>
      <all>/</all>
     </secure_url>
   </frontend>
</config>

Ou, pelo menos, cole o front-end da árvore XML e entre as tags de configuração.

Michael
fonte
Isso corrigiu meu problema. Eu tinha definido tudo certo, mas alguns URLs ainda estavam usando http em vez de https.
mutiemule
Eu quero redirecionar url specif de https para http. então você tem alguma idéia sobre isso?
Sarfaraj Sipai
5

Certifique-se System > Configuration > Web > url_options > "Auto-redirect to Base URL = No". Foi definido como yese causando o problema.

Coloque o código abaixo no arquivo .htaccess.

RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
Vikas Verma
fonte
4

Eu acho que a maneira mais fácil seria alterar o URL base não seguro para https, pois o Magento redireciona todos os pedidos "não seguros" para esse URL e também gera os links com esse URL.

você pode alterar o URL base em sistema -> configuração -> geral -> web

David Verholen
fonte
Obrigado por sua repetição. Eu fiz isso, mas agora, se você abrir este link: www.trendy-mode.nl/damesschoenen/slippers, ele será direcionado para a página inicial. tem alguma solução?
Abhishek Kumbhani 20/03
hm isso é estranho :) Você se importou com a barra no URL base? Eu acho que esse assunto é realmente interessante, pois provavelmente será muito relevante no futuro (ou talvez já agora?) Para ter a página inteira usando https. Eu posso pedir ao meu colega amanhã desde que ele tinha feito isso há já uma loja de Magento
David Verholen
embora a solução da fschmengler deve funcionar eu acho, a resposta de @ Michael parece ser o caminho certo para fazer isso se ele funciona
David Verholen
Bem, a resposta do fschmenglers não é falsa. Estou apenas irritado com a estratégia de atualização do Magentos, pois ela toca em .htaccess e index.php, mas não no local.xml. Por isso é mais 'update save' imho
Michael
2

Os documentos do Apache recomendam não usar uma reescrita:

Para redirecionar httpURLs para https, faça o seguinte:

 <VirtualHost *:80>
     ServerName www.example.com
     Redirect / https://www.example.com/
 </VirtualHost>

 <VirtualHost *:443>
     ServerName www.example.com
     # ... SSL configuration goes here
 </VirtualHost>

Esse snippet deve ir para o arquivo de configuração principal do servidor, não para.htaccess como solicitado na pergunta.

Este artigo pode ter surgido somente depois que a pergunta foi feita e respondida, mas parece ser o caminho atual.

Rakesh Soni
fonte
0

Adicione esse código na parte superior do arquivo .htaccess

RewriteEngine On
RewriteCond %{HTTPS} off
# First rewrite to HTTPS:
# Don't put www. here. If it is already there it will be included, if not
# the subsequent rule will catch it.
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Now, rewrite any request to the wrong domain to use www.
# [NC] is a case-insensitive match
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Mani
fonte