Redirige toutes les requêtes http: // vers https: //

22

Plus tôt, j'ai posté cette question: /programming/36104047/how-to-redirect-all-http-requests-to-https-on-magento mais je n'ai reçu aucune réaction.

Voici l'URL de mon site: www.trendy-mode.nl il vous redirigera vers: https://www.trendy-mode.nl/

Maintenant, le problème est le lien du menu ou tout autre sous-lien n'est pas redirigé avec https://

EX:
Il y a un menu comme - NIEUW | KLEDING | SCHOENEN | ACCESSOIRES etc.
Si vous cliquez sur le menu NIEUW, une nouvelle page sera ouverte mais pas redirigée avechttps://

J'ai essayé beaucoup de réglages .htaccess mais ne fonctionne pas. Quelqu'un ici pour m'aider à ce sujet?

Merci d'avance!

Abhishek Kumbhani
la source

Réponses:

30

Changer l'URL de base non sécurisée en https modifiera tous les liens et redirigera les demandes non https vers https://example.com/ (la page d'accueil), car c'est ce que fait Magento lorsque la validation de l'URL de base échoue.

C'est donc un bon début, mais pour rediriger également http://example.com/foo/ vers https://example.com/foo/, vous devez le faire via une redirection de serveur Web.

Par exemple, ajoutez le code suivant en haut de votre .htaccess:

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

Ou si vous utilisez un proxy inverse comme Varnish:

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

En effet, les demandes de Varnish à Magento seront sans SSL (HTTP), mais Varnish définit l'en-tête X-Forwarded-Proto sur "https" si la demande d'origine a été effectuée avec SSL (HTTPS).

Fabian Schmengler
la source
@Abhishek Je viens de tester votre site et comme il ne fonctionne pas encore - les instructions de Fabians ci-dessus sont correctes. ) mais comme mentionné ci-dessous, juste après RewriteEngine On. La façon dont je l'ai fait est légèrement différente en ce sens que ma deuxième ligne se lit; RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Peter Svegrup
Quelqu'un a-t-il subi des effets négatifs sur le classement des pages Google après avoir déplacé un site magento complètement vers https?
paj
10

Pour être complet, nous faisons également une chose très similaire à ce que fschmengler a suggéré avec quelques ajouts;

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

Nous le plaçons dans la section du .htaccess juste en dessous RewriteEngine On

Smartie
la source
9

Définissez votre URL de base pour sécurisée et non sécurisée dans le backend. Définissez oui lors de l'utilisation d'une URL sécurisée en frontend dans le backend.

Modifiez ensuite votre application / etc / local.xml et incluez-la

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

Ou au moins collez le frontend de l'arbre XML et abaissez-le entre les balises de configuration.

Michael
la source
Cela a résolu mon problème. J'avais tout réglé correctement mais certaines URL utilisaient toujours http au lieu de https.
mutiemule
je veux rediriger l'URL spécif de https vers http. vous en avez donc une idée?
Sarfaraj Sipai le
5

Assurez-vous System > Configuration > Web > url_options > "Auto-redirect to Base URL = No". Il a été défini sur yeset à l'origine du problème.

Mettez le code ci-dessous dans le fichier .htaccess.

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

Je pense que le moyen le plus simple serait de changer l'URL de base non sécurisée en https car magento redirige ensuite toutes les demandes "non sécurisées" vers cette URL et génère également les liens avec cette URL.

vous pouvez changer l'URL de base sous système -> configuration -> général -> web

David Verholen
la source
Merci pour votre replay .. je l'ai fait mais maintenant si vous ouvrez ce lien: www.trendy-mode.nl/damesschoenen/slippers il vous ramènera à la page d'accueil. avez une solution?
Abhishek Kumbhani
hm thats bizarre :) Avez-vous l'esprit la barre oblique de fin dans l'URL de base? Je pense que cette question est vraiment intéressante car il sera très probablement pertinent à l'avenir (ou peut-être déjà maintenant?) D'avoir la page entière en utilisant https. Je peux demander à mon collègue demain car il l'avait déjà fait pour une boutique magento
David Verholen
bien que la solution de fschmengler devrait fonctionner, je pense, la réponse de @Michael semble être la bonne façon de le faire si cela fonctionne
David Verholen
Eh bien, la réponse des fschmenglers n'est pas fausse. Je suis juste ennuyé de la stratégie de mise à jour de Magentos car elle touche .htaccess et index.php mais pas local.xml. Il est donc plus «mise à jour enregistrer» à mon humble avis
Michael
2

Les documents Apache recommandent de ne pas utiliser de réécriture:

Pour rediriger les httpURL vers https, procédez comme suit:

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

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

Cet extrait devrait aller dans le fichier de configuration du serveur principal, pas dans .htaccesscomme demandé dans la question.

Cet article n'a peut-être été publié qu'après que la question a été posée et répondue, mais semble être la voie à suivre actuellement.

Rakesh Soni
la source
0

Ajoutez ce code en haut du fichier .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
la source