htaccess force https no funciona si no hay un URI
Nunca he trabajado con Apache, así que soy un novato.
Tengo una cuenta de alojamiento múltiple en el sitio web de un proveedor, donde se utilizan 3 dominios. Quiero forzar la conexión https en un dominio, digamos example.com, que no es el dominio principal del plan de alojamiento. Lo que hice fue agregar un .htaccessarchivo en la ruta examplecom/public_html, la carpeta donde están todos los archivos del sitio web. En el .htaccesshe copiado y pegado estas cadenas de la guía del proveedor:
RewriteEngine on
RewriteBase /
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://www.example.com%{REQUEST_URI} [L,R=301]
El sitio web funciona correctamente si voy a una página con un URI no vacío, pero no funciona en la página principal. Por ejemplo: http://example.com/anypagese redirige correctamente a https://www.example.com/anypage, mientras que http://example.com/se redirige a https://www.example.com/public_htmly no puede entender por qué.
Respuestas
Parece que puede tener un conflicto con las directivas existentes; sin embargo, puede intentar cambiar las directivas existentes para ver si hay alguna diferencia:
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://www.example.com/$1 [L,R=301]
Siempre que el .htaccessarchivo esté ubicado en el examplecom/public_htmldirectorio, la referencia inversa capturada ( $1) solo debe contener cualquier cosa que venga después de esto (si es que hay algo). Mientras que la REQUEST_URIvariable del servidor siempre contiene la ruta URL completa.
La RewriteBasedirectiva es superflua aquí ya que está utilizando una URL absoluta en la RewriteRule sustitución .
Deberá borrar el caché de su navegador antes de realizar la prueba, ya que es probable que el 301 erróneo se haya guardado en caché. Pruebe con redireccionamientos 302 (temporales) para evitar problemas de almacenamiento en caché.