Tengo varios dominios que operan bajo una sola .htaccess de archivos, cada uno con un certificado SSL.

Necesito a fuerza de un https prefijo en cada dominio, garantizando www versiones redirigir a no-www queridos.

A continuación es mi código no funciona:

RewriteCond %{HTTP_HOST} ^www.%{HTTP_HOST}
RewriteRule ^.*$ https://%{HTTP_HOST}%{REQUEST_URI}/$1 [R=301,L]

Lo que quiero lograr es: redirigir algo como https://www.example.com a https://example.com.

¿Qué estoy haciendo mal y cómo puedo conseguirlo?

InformationsquelleAutor aegenes | 2009-09-25

9 Comentarios

  1. 89

    www a sin www con https

    RewriteEngine on
    
    RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
    RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
    
    RewriteCond %{HTTPS} !on
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
    
    • «RewriteRule ^(.*)$ http://%1/$1 [R=301,L]» fue cambiado a «RewriteRule ^(.*)$ https://%1/$1 [R=301,L]» (por @KenVerhaegen) de lo contrario «sería el primer redirigir a los no-http y https… así que ahora podemos evitar, posiblemente provocado segunda redirección.»
    • Muy simple y de partido, esto también se debe a la respuesta correcta para esta pregunta
    • no importa lo que intente, no funciona para Firefox y Safari. Chrome está bien. cualquier solución que podría ayudar – me han certificado sólo para example.com – no de example.com
  2. 18

    Su condición nunca va a ser verdad, porque es como «si (a == a + b)».

    Me gustaría probar la siguiente:

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

    Esta captura «google.com» a partir de «www.google.com» en %1, el resto en $1 y después de que la combinación de las 2, cuando HTTP_HOST comienza con www (con o sin https).

    • Desafortunadamente, esto todavía crea una «Conexión no es de Confianza» de error cuando se intenta acceder a domain.com
    • Hmm pero se está redirigiendo adecuadamente? Si es que podría ser un problema de certificado.
    • Consulte este para el problema de certificado.
    • RewriteRule ^.*$ https://%1/$1 [R=301,L] no estaba funcionando para mí. si fui a la mysite.com/some/path fue redirigir a sólo mysite.com si cambia esto a RewriteRule ^(.*)$ https://%1/$1 [R=301,L] (nota: los corchetes), a continuación, se le redirige como se espera mysite.com/some/path
  3. 12

    Ref: Apache redirección www a no-www y HTTP a HTTPS

    http://example.com

    http://www.example.com

    https://www.example.com

    a

    https://example.com

    RewriteEngine On
    RewriteCond %{HTTPS} off [OR]
    RewriteCond %{HTTP_HOST} ^www\. [NC]
    RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
    RewriteRule ^ https://%1%{REQUEST_URI} [L,NE,R=301]
    

    Si en lugar de example.com desea que la dirección URL predeterminada para ser http://www.example.com, entonces simplemente cambiar el tercero y el quinto líneas:

    RewriteEngine On
    RewriteCond %{HTTPS} off [OR]
    RewriteCond %{HTTP_HOST} !^www\. [NC]
    RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
    RewriteRule ^ https://www.%1%{REQUEST_URI} [L,NE,R=301]
    
    • La respuesta más clara de la omi
  4. 8

    Para hacer cumplir no-www y https en una única solicitud, se puede utilizar la siguiente Regla en tu htaccess :

    RewriteEngine on
    
    RewriteCond %{HTTP_HOST} ^www\. [OR]
    RewriteCond %{HTTPS} off
    RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$
    RewriteRule ^ https://%1%{REQUEST_URI} [NE,L,R]
    

    Esto redirige http://www.example.com/ o https://www.example.com/ ssl no-www https://example.com/ .

    Estoy usando R Temp Redirigir bandera para el propósito de pruebas y para evitar el almacenamiento en caché del navegador. Si usted desea hacer la redirección permanente , sólo cambia el R bandera a R=301 .

    • hmm pero aún cuando entro en sitio con www safari dice que la página no es segura y la ópera no quiere redirigir cualquier opción con o sin www ssl, ¿por qué?
  5. 5

    Certificado debe abarcar tanto y sin » www » https. Algunos de proveedor de certificados de cubrir tanto para http://www.xxxx.yyy pero sólo uno de xxxx.yyy.

    Encender vuelve a escribir:

    RewriteEngine On
    

    Hacer uso de todos los http https:

    RewriteCond %{SERVER_PORT} 80
    RewriteRule ^(.*)$ https://xxx.yyy/$1 [L,R=301]
    

    Hacer sólo https www el uso de la no-www https:

    RewriteCond %{SERVER_PORT} 443
    RewriteCond %{HTTP_HOST} ^www[.].+$
    RewriteRule ^(.*)$ https://xxxx.yyy/$1 [L,R=301]
    

    No puede ser el tratamiento de la no-www https, de lo contrario se produce un bucle.

    En [L,R=301]:

    1. L = Si la regla que se procesa, no más.
    2. R=301 = le Indica navegador/robot para hacer una redirección permanente.

    Más genérico

    Un enfoque más genérico-no de puerto-dependiente-es:

    RewriteCond %{HTTP_HOST} ^www\.
    RewriteRule ^(.*)$ https://xxxx.yyy/$1 [R=301,QSA]
    

    para hacer cualquier url con www caer.

    RewriteCond %{HTTPS} !on
    RewriteCond %{HTTPS} !1
    RewriteCond %{HTTP:X-Forwarded-Proto} !https
    RewriteCond %{HTTP:X-Forwarded-SSL} !on
    RewriteRule ^(.*)$ https://xxxx.yyy/$1 [R=301,QSA]
    

    a fuerza de no-url https, incluso para los que el sistema de aguas abajo de equilibradores de carga que la caída de https, el uso de https.

    Nota que no he probado el forwarded opciones, así que agradecería comentarios acerca de cualquier problema con ellos. Esas líneas podrían quedar fuera si su sistema no está detrás de un equilibrador de carga.

    A HTTP_HOST o no

    Puede utilizar ${HTTP_HOST} a ser parte de la URL en la RewriteRule, o usted puede utilizar su explícito canónica de texto nombre de dominio (xxxx.yyy arriba).

    Especifica el nombre de dominio de forma explícita se asegura de que no sea leve, de la mano del personaje de flexión de medios se utilizan en el suministrado por el usuario, URL, posiblemente, de engañar a su sitio a hacer algo que podría no estar preparado para, o al menos se asegura de que el buen nombre de dominio que aparece en la barra de direcciones, independientemente de la cadena de dirección URL abrió la página.

    Incluso puede ayudar a convertir punycode codificado dominios para mostrar el correcto caracteres unicode en la barra de direcciones.

  6. 3

    Esto funcionó para mí:

    RewriteEngine On
    RewriteCond %{HTTPS} on
    RewriteCond %{HTTP_HOST} ^www\.(.*)
    RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
    
    • RewriteCond %{HTTPS} en que hizo el truco para mí.
  7. 1
    RewriteEngine On
    
    RewriteCond %{HTTP_HOST} ^www\.(.*)
    RewriteRule ^.*$ https://%1/$1 [R=301,L]
    
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
    

    Esto funcionó para mí después de mucho ensayo y error. Una parte es la de que el usuario de arriba y de captura de http://www.xxx.yyy y enviar a https://xxx.yyy

    Parte 2 se ve en la URL ingresadas y comprueba si HTTPS, si no, se envía a HTTPS

    Hecho en este orden, se sigue la lógica y no se produce ningún error.

    AQUÍ está mi versión COMPLETA en el lado htaccess con WordPress:

    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^www\.(.*)
    RewriteRule ^.*$ https://%1/$1 [R=301,L]
    
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
    
    
    # BEGIN WordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>
    
    # END WordPress
    
  8. 1
    RewriteEngine On
    RewriteCond %{HTTPS} off [OR]
    RewriteCond %{HTTP_HOST} ^www\. [NC]
    RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
    RewriteRule ^ https://%1%{REQUEST_URI} [L,NE,R=301]
    

    Este a mi me funciona perfectamente!

  9. 0

    Para mí fue la mejor codificar «example.com» como cadena de caracteres, así que tengo menos reglas, incluso se puede utilizar para redirigir desde .org .com o similar también:

    <IfModule mod_rewrite.c>
      RewriteEngine On
      RewriteCond %{HTTP_HOST} !^example\.com$ [NC]
      RewriteRule ^ https://example.com%{REQUEST_URI} [L,NE,R=301]
    </IfModule>
    

Dejar respuesta

Please enter your comment!
Please enter your name here