Redirigir todas las http: // solicitudes a https: //

22

Anteriormente publiqué esta pregunta: /programming/36104047/how-to-redirect-all-http-requests-to-https-on-magento pero no obtuve ninguna reacción.

Aquí está la URL de mi sitio: www.trendy-mode.nl lo redireccionará a: https://www.trendy-mode.nl/

Ahora el problema es el enlace del menú o cualquier otro subenlace no se redirige con https://

EX:
hay un menú como - NIEUW | KLEDING | SCHOENEN | ACCESORIOS, etc.
Si hace clic en el menú NIEUW, se abrirá una nueva página pero no se redireccionará conhttps://

He intentado muchos ajustes de .htaccess pero no funciona. ¿Alguien está aquí para ayudarme en esto?

¡Gracias de antemano!

Abhishek Kumbhani
fuente

Respuestas:

30

Cambiar la URL base no segura a https cambiará todos los enlaces y redirigirá las solicitudes que no sean https a https://example.com/ (la página de inicio), porque eso es lo que hace Magento cuando falla la validación de URL base.

Por lo tanto, este es un buen comienzo, pero también para redirigir http://example.com/foo/ a https://example.com/foo/ , debe hacerlo a través de la redirección del servidor web.

Por ejemplo, agregue el siguiente código en la parte superior de su .htaccess:

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

O si usa un proxy inverso como Varnish:

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

Esto se debe a que las solicitudes de Varnish a Magento serán sin SSL (HTTP), pero Varnish establece el encabezado X-Fordered-Proto en "https" si la solicitud original se realizó con SSL (HTTPS).

Fabian Schmengler
fuente
@Abhishek Acabo de probar su sitio y, dado que aún no funciona, las instrucciones de Fabians anteriores son correctas ... pero también debería decir que estas 2 líneas deben agregarse al archivo .htaccess en la raíz de su instalación de magento pero NO en la parte superior (generalmente ) pero como se menciona a continuación, justo después RewriteEngine On. La forma en que lo hice es ligeramente diferente en que mi segunda línea lee; RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Peter Svegrup
¿Alguien ha experimentado efectos adversos en el ranking de la página de Google después de mover un sitio magento completamente a https?
paj
10

Para completar, también hacemos algo muy similar a lo que ha sugerido fschmengler con algunas adiciones;

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

Colocamos esto dentro de la sección de .htaccess justo debajo RewriteEngine On

Smartie
fuente
9

Establezca su URL base para segura y no segura en el backend. Establezca sí al usar url segura en la interfaz en el backend.

Luego edite su aplicación / etc / local.xml e incluya esto

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

O al menos pegue la interfaz del árbol XML y baje entre las etiquetas de configuración.

Miguel
fuente
Esto solucionó mi problema. Lo había arreglado todo, pero algunas URL todavía usaban http en lugar de https.
mutiemule
Quiero redirigir la URL específica de https a http. Entonces, ¿tienes alguna idea al respecto?
Sarfaraj Sipai
5

Asegúrese System > Configuration > Web > url_options > "Auto-redirect to Base URL = No". Se estableció enyes y causó el problema.

Ponga el siguiente código en el archivo .htaccess.

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

Creo que la forma más fácil sería cambiar la url de base no segura a https ya que magento redirige todas las solicitudes "no seguras" a esta url y también genera los enlaces con esta url.

puede cambiar la url base en sistema -> configuración -> general -> web

David Verholen
fuente
Gracias por su repetición. Lo hice pero ahora, si abre este enlace: www.trendy-mode.nl/damesschoenen/slippers, lo llevará a la página de inicio. ¿Tienes alguna solución?
Abhishek Kumbhani
hm eso es raro :) ¿Te importó el corte final en la URL base? Creo que este asunto es realmente interesante, ya que lo más probable es que sea muy relevante en el futuro (¿o tal vez ya?) Tener toda la página usando https. Puedo preguntarle a mi colega mañana, ya que ya había hecho esto para una tienda de magento
David Verholen
Aunque la solución de fschmengler debería funcionar, creo, la respuesta de @Michael parece ser la forma correcta de hacerlo si funciona
David Verholen
Bueno, la respuesta de fschmenglers no es falsa. Me molesta la estrategia de actualización de Magentos, ya que toca .htaccess e index.php pero no local.xml. Así que es más 'actualizar guardar' en mi humilde opinión
Michael
2

Los documentos de Apache recomiendan no usar una reescritura:

Para redirigir las httpURL a https, haga lo siguiente:

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

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

Este fragmento debe ir al archivo de configuración del servidor principal, no a lo .htaccessque se pide en la pregunta.

Este artículo podría haber aparecido solo después de que se hizo y respondió la pregunta, pero parece ser el camino actual a seguir.

Rakesh Soni
fuente
0

Agregue este código en la parte superior del archivo .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
fuente