Redirect de http a https y www a no-www en archivo .htaccess para web.ucr.ac.cr

De Apuntes
Saltar a: navegación, buscar

El archivo .htaccess modifica la configuración general del servidor web Apache, pero se aplica solo en el directorio donde se encuentre. Entre otras cosas es posible agregar directivas para reescribir todas las peticiones que provengan con protocolo http como https, y todas las que contengan www como una url sin www.

Requisitos:

  • Módulo rewrite de Apache (web. lo tiene habilitado).
  • Directiva AllowOverride All [1] en el virtual host (web. la tiene).
  • Crear o modificar un archivo .htaccess en la raíz del directorio del sitio web (En web.: ~/public_html/.htaccess).

Edite el archivo .htaccess y agregue las siguientes líneas [2][3]:

## Habilita motor. Agregue solo una vez en el archivo.
RewriteEngine On


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


## http a https. Funciona detras de un proxy.
# If we receive a forwarded http request from a proxy...
RewriteCond %{HTTP:X-Forwarded-Proto} =http [OR]

# ...or just a plain old http request directly from the client
RewriteCond %{HTTP:X-Forwarded-Proto} =""
RewriteCond %{HTTPS} !=on

# Redirect to https version
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Referencias:

  1. https://httpd.apache.org/docs/2.4/es/mod/core.html#allowoverride
  2. https://stackoverflow.com/a/52420519
  3. https://stackoverflow.com/a/1270281