apache - redireccionar - htaccess fuerza https y redirige www a no-www, pero no a otros subdominios
redireccionar url (5)
Sé que hay muchos hilos similares, pero ninguno de ellos parece coincidir con mi problema exacto. Esto es lo que trato de hacer:
(1) http://www.mydomain.com/ -> https://mydomain.com/
(2) http://mydomain.com/ -> https://mydomain.com/
(3) https://www.mydomain.com -> https://mydomain.com/
Idealmente, también me gustaría cubrir la situación si alguna vez agrego más subdominios, para comportarme automáticamente como el siguiente (preferiblemente de una manera genérica que funcionará para cualquier subdominio que agregue).
(4) http://sub.mydomain.com/ -> https://sub.mydomain.com/
En este momento me pregunto si es posible crear un solo archivo .htaccess que haga todo lo que necesito, aunque tengo que admitir que entiendo los regexes, pero no soy exactamente un uberpro mod_rewrite.
Aquí están las soluciones que ya probé:
- Forzar no www y https a través de htaccess
- Tipo de trabajos, pero parece generar un bucle de redirección
- .htaccess redirecciona www a no-www con SSL / HTTPS
- Funciona para (1) y (3), pero no para (2)
- htaccess fuerza www a no www con consideración de http o https
- Redirige a http://mydomain.com/ (sin https) para (1)
- No hace nada por (2)
- Redirige a http://mydomain.com/ (sin https) para (3)
Mi certificado SSL cubre el www-subdominio, por lo que no estoy buscando una solución de error de ''conexión no confiable'', soy consciente de que no es posible.
Coloque este código en su archivo DOCUMENT_ROOT/.htaccess
:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{ENV:HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
RewriteCond %{HTTP_HOST} ^www/.(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,R=301,NE]
Forzar el uso de HTTPS
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Forzar www a no www
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.bewebdeveloper.com$
RewriteRule ^(.*) http://bewebdeveloper.com/$1 [QSA,L,R=301]
Descubrí que la mayoría de las sugerencias no se detectaban cuando tenía algo que era https://www.example.com y redireccionaba a https://example.com .
Lo siguiente funcionó para todas las permutaciones:
RewriteEngine On
# match any URL with www and rewrite it to https without the www
RewriteCond %{HTTP_HOST} ^(www/.)(.*) [NC]
RewriteRule (.*) https://%2%{REQUEST_URI} [L,R=301]
# match urls that are non https (without the www)
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} !^(www/.)(.*) [NC]
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
¡Espero que esto ayude a alguien!
RewriteEngine on
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www/.([^.]+/.[^.]+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,R=301,NE]
Este script redirigirá
a
mientras preserva el subdominio.
Ninguno de los ejemplos funcionó para mí, parecían quedar atrapados en un bucle, sin embargo, los siguientes trabajos.
# match any URL with www and rewrite it to https without the www
RewriteCond %{HTTP_HOST} ^(www/.)(.*) [NC]
RewriteRule (.*) https://%2%{REQUEST_URI} [R=301,L]
# match non https and redirect to https
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
El orden importa, evitará una tercera redirección en algunos casos.
Si desea utilizar un subdominio (distinto de www.) Simplemente elimine el primer conjunto de reglas.
Entonces, para los subdominios todo lo que necesitas es
# match non https and redirect to https
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
Uso los servicios de Cloudways y he encontrado que esto es lo único que funciona