.htaccess - Información general
Un archivo .htaccess es un archivo de configuración para el servidor web Apache que se almacena en un directorio con el fin de cambiar la configuración del servidor específicamente para este directorio y sus subdirectorios. Suele utilizarse para configurar reescrituras de URL (reglas de reescritura), derechos de acceso, protección por contraseña o redireccionamientos. Esto permite a los desarrolladores web realizar cambios sencillos en la configuración sin tener acceso directo a la configuración principal del servidor. Los servidores Nginx, por su parte, no utilizan archivos .htaccess; estas tareas las realizan los archivos de configuración del servidor (normalmente nginx.conf).
Un archivo .htaccess suele estar ubicado en el directorio de inicio de un sitio web (el directorio que se introduce como ruta de destino en la configuración del dominio, también conocido como DOCROOT).
La configuración es efectiva en el directorio actual y en todos los subdirectorios. Sin embargo, la configuración puede sobrescribirse con un archivo .htaccess en un subdirectorio.
El archivo .htaccess se analiza cada vez que se llama al servidor web Apache y para cada componente individual del sitio web. Si una página consta de 1 archivo HTML, 5 archivos CSS, 10 archivos Javascript y 40 imágenes/iconos, el archivo .htaccess se ejecuta 56 veces al abrir el sitio web.
Por cierto, el servidor web es muy quisquilloso con la ortografía y la sintaxis correctas de las entradas. El más mínimo error suele provocar un "Error de servidor 500". Por lo tanto, después de cada cambio en el archivo .htaccess, debe comprobar si se puede seguir accediendo al sitio web.
Si tiene alguna pregunta sobre la configuración de un archivo .htaccess, nuestros clientes de hosting pueden ponerse en contacto con nuestro equipo de soporte en hosting@jweiland.net. Nuestro equipo estará encantado de ayudarle.
Redirecciona
Los diferentes tipos de reenvío
Dependiendo del caso de uso, el reenvío puede tener lugar con diferentes códigos de estado:
- 301 (Moved Permanently): Este redireccionamiento señala que la dirección de la página cambia permanentemente. Los motores de búsqueda lo interpretan como que una entrada existente en el índice de búsqueda ha recibido una nueva dirección.
- 302 (Encontrado): Redirección temporal. Debe utilizarse si el traslado o cambio es sólo temporal, por ejemplo, durante trabajos de mantenimiento o pruebas. Los motores de búsqueda conservan la URL antigua en su índice.
- 307 (Redirección temporal): Funciona de forma similar al 302, pero garantiza que el método HTTP (por ejemplo, POST) permanece inalterado. Esto es útil para las redirecciones que procesan entradas de formularios.
- 308 (Redirección permanente): Similar al 301, pero también conserva el método HTTP original. Esta redirección es útil si el contenido se desplaza permanentemente pero no deben modificarse métodos específicos, por ejemplo, para determinadas llamadas a la API.
El código de estado deseado se especifica al final del comando RewriteRule entre corchetes, por ejemplo [R=301,L].
Notas sobre el funcionamiento de los redireccionamientos
El procesamiento de un archivo .htaccess por el servidor web Apache es extremadamente rápido y normalmente sólo tarda unos microsegundos por petición. Esto hace que las reglas .htaccess sean muy eficientes, especialmente para redirecciones simples.
Alternativamente, el módulo de redirección en el backend también se puede utilizar para las redirecciones en TYPO3. Sin embargo, esto carga todo el framework TYPO3, lo que puede tardar varios cientos de milisegundos. Esto puede conducir a una mayor carga del servidor, especialmente con un alto número de accesos. Por lo tanto, se recomienda que las redirecciones simples se realicen preferentemente en el archivo .htaccess.
Significado del parámetro "L" para RewriteRules
El parámetro L significa "Última regla" y garantiza que no se procesen más reglas de reescritura después de que se haya ejecutado esta regla. Así se evitan efectos secundarios no deseados de reglas posteriores.
RewriteRule ^página-vieja$ /página-nueva [L,R=301]
Aquí se reenvía una página antigua a una nueva. El procesamiento del archivo .htaccess finaliza tras el proceso.
Ejemplo: Redirección de HTTP a HTTPS
Si todas las páginas de un dominio deben ser accedidas exclusivamente a través de una conexión SSL encriptada, esto puede ser configurado a través de una entrada en el archivo .htaccess en el directorio de inicio del dominio:
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Explicación:
RewriteCond %{HTTPS} !=on
: Comprueba si la conexión no se realiza a través de HTTPS.RewriteRule ^ %{HTTP_HOST}%{REQUEST_URI} [L,R=301]
: Redirige la petición a la versión HTTPS del dominio y URL actuales.
Ejemplo: elimine siempre "www" antes del dominio
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^ https://%1%{REQUEST_URI} [L,R=301]
Explicación:
RewriteCond %{HTTP_HOST}
^www\.(.*)$
: Comprueba si el dominio comienza por "www.".RewriteRule ^ %1%{REQUEST_URI} [L,R=301]
: Elimina "www." y redirige a la versión sin "www.".
Ejemplo: añada siempre "www" antes del dominio
Con la siguiente entrada, todas las llamadas a un dominio sin www se reenvían a la variante con www:
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Explicación:
RewriteCond %{HTTP_HOST} !^www\.
: Comprueba que el dominio no empiece por "www.".RewriteRule ^ www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
: Redirige la petición a la versión con "www." delante del dominio.
Particularidad: anclaje en una cara
Los "anclajes" pueden establecerse como marcadores de salto en un sitio web. Al llamarlos, el navegador no salta a la parte superior de la página, sino directamente al punto de anclaje. El ancla se identifica mediante un carácter almohadilla # en la URL seguido del nombre de la etiqueta de salto. Ejemplo de una dirección con un ancla
dominio.tld/actual.html#artículo25
Si se quiere hacer referencia directa a una etiqueta de salto a través de la redirección .htaccess, debe especificarse entre corchetes el parámetro adicional NE (No Encoding):
RewriteRule ^news\.html$ /current.html#article25 [R=301,L,NE]
Ejemplo: Reenviar dominio antiguo a dominio nuevo
Si desea redirigir a un nuevo dominio, la entrada en el archivo .htaccess es la siguiente:
RewriteCond %{HTTP_HOST} ^(www\.)?dominio\.com$
RewriteRule ^ https://domain.de%{REQUEST_URI} [L,R=301]
Explicación:
RewriteCond %{HTTP_HOST}
^(www\.)?dominio\.com$
: Comprueba si la solicitud va dirigida a "dominio.com" o a "www.domain.com".RewriteRule ^ domain.de%{REQUEST_URI} [L,R=301]
: Redirige la petición a "dominio.com", manteniendo la ruta y los parámetros.
Ejemplo: Redirigir el dominio a una subpágina de otro dominio
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com [NC]
RewriteRule ^(.*)$ https://domain.de/unterseite.html [R=301,L]
El parámetro [NC] de la línea RewriteCond significa "No Case", lo que significa que la URL a la que se llama no distingue entre mayúsculas y minúsculas.
Eliminar parámetros de la URL
A veces se desea eliminar un parámetro de una URL, por ejemplo, si sólo existe el idioma predeterminado de una página originalmente multilingüe. Si Google llama a una página como jweiland.net/index.php?id=289&L=1, puede redirigir la URL a jweiland.net/index.php?id=289. Esto se puede conseguir con la siguiente entrada en el archivo .htaccess:
RewriteCond %{QUERY_STRING} ^(.+?&|)L=[^&]*(?:&(.*)|)$ [NC]
RewriteRule ^ %{REQUEST_URI}?%1%2 [R=301,L]
El parámetro a eliminar (aquí L=) debe ajustarse en la primera línea.
Redirección con ? en la URL
http://www.domainname.de/index.php?id=7
según
http://www.domainname.de/impressum.html
debería redirigirse. El problema es la ? en la URL antigua. Esto debe ser consultado a través de QUERY_STRING en la condición.
Solución:
RewriteCond %{QUERY_STRING} ^id=7$
RewriteRule ^.*$ https://name-der-domain.de/impressum.html? [R=301,L]
La caché del navegador también es importante. Debería vaciarse, ya que si una llamada sigue en la caché, es posible que acabe en la página equivocada.
Esto evita que las URL antiguas que ya no existen debido a una mudanza o reprogramación lleven a una peor clasificación en los motores de búsqueda.
El mejor rendimiento y el servicio perfecto para alojar su sitio web. Todas las tarifas de alojamiento web con 100% SSD.
Ubicación del servidor en Alemania. Más información sobre nuestras ofertas aquí.
Servicio gratuito de mudanzas
Si actualmente está con otro proveedor de alojamiento, le ofrecemos un servicio de migración gratuito a una de nuestras tarifas de alojamiento sin coste alguno. Así podrá beneficiarse en el futuro de nuestro apoyo experto y de nuestros amplios servicios.
Directorio
Si un listado de directorios debe realizarse a través de una subpágina protegida (por ejemplo, fileadmin/downloads) del sitio web, el .htaccess debe configurarse de la siguiente manera:
AuthType Básico
AuthName "sistema - "
Opciones +Indexes
IndexOptions +FancyIndexing
AuthUserFile /*su_ruta_servidor/ruta_proyecto/filadmin/downloads/.htpasswd
AuthGroupFile /dev/null
requerir valid-user
Puede encontrar *su_ruta_servidor en su menú de cliente en Información técnica o introduciendo el comando $PWD en el shell.
El usuario con contraseña cifrada debe estar presente en el .htpasswd en este caso.
La subpágina con el listado de directorios debe excluirse del index.php de TYPO3 y puede accederse a ella a través del .htaccess en el directorio del proyecto con la siguiente información después del RewriteEngine On:
RewriteRule ^fileadmin/downloads/$ - [L]
RewriteRule ^fileadmin/downloads/.*$ - [L]
Bloquear determinadas direcciones IP
A veces es necesario, por ejemplo en caso de intento de ataque al sitio web, bloquear determinadas direcciones IP para que no puedan acceder al sitio web. La siguiente entrada en el archivo .htaccess (antes de la entrada 'RewriteEngine On') en el directorio de inicio de la página se puede utilizar para bloquear visitantes no deseados:
order allow,deny
denegar desde 192.168.2.17
denegar desde 10.10.20.63
permitir desde todos
Si hay varias direcciones IP, cada una se introduce en una línea distinta. La configuración también es válida para todos los subdirectorios. Si alguien intenta acceder a la página con una dirección bloqueada, recibirá un código de error 403 (acceso denegado).
Permitir vídeos HTML5
Si hay problemas para reproducir vídeos incrustados a través de HTML5 en navegadores individuales, las siguientes líneas en el archivo .htaccess en el directorio del proyecto pueden ayudar:
AddType video/ogg .ogm
AddType video/ogg .ogv
AddType video/ogg .ogg
Añadir tipo video/webm .webm
Añadir tipo audio/webm .weba
Añadir tipo video/mp4 .mp4
Añadir tipo video/x-m4v .m4v
Zona protegida por contraseña
Si desea crear un área que no sea accesible al público, por ejemplo para una instalación de prueba (test.meinedomain.de) de su propio sitio web o un área de descarga para empleados con las fotos de la fiesta de Navidad (test.meinedomain.de/downloads/weihnachtsfeier2015/), no hace falta mucho.
Una vez configurada la protección del directorio, sólo se puede acceder al área protegida desde el exterior con un nombre de usuario y una contraseña.
Crear archivos .htaccess y .htpasswd
Para crear los archivos, conéctese al espacio web mediante SSH.
A continuación, utilice cd o mc para cambiar al directorio que desea proteger (por ejemplo: cd typo3cms/projekt1/).
Tenga en cuenta que es posible que ya exista un archivo .htaccess en el directorio. Con el comando Unix
ls -lah .ht*
puede comprobarlo. Si ya existe un archivo .htaccess allí, los cambios deben añadirse a él. Las líneas de código adicionales deben añadirse al principio del archivo o antes de cualquier regla de reescritura existente; de lo contrario, los ajustes no funcionarán correctamente.
Contenido del archivo .htaccess
AuthType Básico
AuthName "Por favor, inicie sesión"
AuthUserFile /completar/servidor/ruta/al/directorio/.htpasswd
require valid-user
Importante: El comando de shell pwd se puede utilizar para mostrar la ruta completa del servidor, ya que el .htpasswd sólo se puede encontrar de esta forma. En el código anterior, sustituya /completo/servidor/ruta/al/directorio/ por la salida del comando pwd.
Hay varias formas de crear el archivo .htpasswd, por ejemplo los generadores en línea, pero consideramos que éstas son críticas. Usted se ve obligado a introducir su nombre de usuario y contraseña en un formulario externo y no sabe lo que está ocurriendo realmente con sus datos.
Por esta razón, recomendamos el siguiente procedimiento:
Puede hacerlo fácilmente con el comando Unix htpasswd. Un ejemplo de llamada sería el siguiente
htpasswd -cm ./.htpasswd nombreusuario
A continuación, se le pedirá que introduzca una contraseña, incluida una repetición. Si a continuación se añaden más usuarios, la opción -c (crear nuevo archivo) no debe activarse en ningún caso, ya que de lo contrario el archivo se sobrescribirá sin preguntar. La opción -m significa que la contraseña se escribe en el archivo cifrada con MD5.
htpasswd -m ./.htpasswd nombreusuarioadicional
Para comprobar si todo ha ido bien, basta con llamar a la URL protegida en el navegador. Si aparece un cuadro de diálogo para iniciar sesión y el inicio de sesión funciona, la protección ya se ha configurado. Si aparece un "Error de servidor 500", lo más probable es que se deba a un error de sintaxis en los archivos .htaccess o .htpasswd.