
  


---
title: "Diccionario de .htaccess - Carlos Sánchez"
author: "Carlos Sánchez"
url: https://carlossanchezdonate.com/articulo/apache/
image: https://carlossanchezdonate.com/wp-content/uploads/tb-apache.jpg
---





# Apache y htaccess para SEO




                Directivas y comandos para mejorar el SEO con Apache






![Apache y htaccess para SEO](https://carlossanchezdonate.com/wp-content/uploads/cover-apache.jpg)




**Autor:**

        : [Carlos Sánchez](https://carlossanchezdonate.com/sobre-mi/)


**Temática: **
: [Servidores](https://carlossanchezdonate.com/seo-avanzado/servidores/)




**Fecha de publicación:**

        : 2023-10-30



**Última revisión:**

        : 2023-11-07




        **Índice**
                mostrar


        1
                Vocabulario de .htaccess (Apache)
        1.1
                Variables
        1.2
                Ifmodule
        1.3
                Rewrites
        1.3.1
                RewriteEngine
        1.3.2
                RewriteCond
        1.3.3
                RewriteRule
        1.4
                If
        1.5
                Header
        1.6
                Files
        1.7
                FilesmAtch
        1.8
                ErrorDocument
        1.9
                Redirect
        1.10
                Expires
        1.11
                Authn_file
        1.12
                h2
        2
                Bibliografía

Los [servidores](https://carlossanchezdonate.com/seo-avanzado/servidores/#informacion) son de muchísima utilidad en el mundo del posicionamiento web. Y **Apache** es uno de los servidores webs más utilizados en el mundo, que destaca por su versatilidad y facil configuración.

Dentro del mundo del SEO es conocido por la característica que tiene de poder configurar un archivo llamado **.htaccess** que nos permite hacer cambios en el servidor modificando el archivo sin necesidad de reiniciar el servidor ([En nginx si sería necesario](https://carlossanchezdonate.com/articulo/recargar-configuracion-nginx/), por ejemplo).

Una cosa que se debe tener en cuenta, es que se lee y procesa de arriba hacia abajo. Un ejemplo de qué quiere decir esto para tenerlo visual, es que si una misma URL tiene dos redirecciones (por una mala configuración), solo funcionará la que está más arriba, ya que es la que se lee primero y nunca dará tiempo a llegar a la otra.

## Vocabulario de .htaccess (Apache)

En el archivo de .htaccess se usa el mismo lenguaje que en Apache. No obstante, utilizar el archivo de .htaccess puede acabar ralentizando la ejecución del servidor, ya que su ventaja es su debilidad. Como pueden hacerse cambios en el archivo y ejecutarse de forma inmediata, el servidor tiene que procesar lo que hay en el .htaccess con cada petición. Algo que no sería necesario en caso de emplearse el **httpd.conf**, es decir el archivo de la configuración de Apache, el cual sí que necesita de un reinicio o reseteo cada vez que se realiza algún cambio.

En esta** cheatsheet de apache** podrás ver los códigos más útiles para que los puedas implementar en tu servidor.

**
Todos los comandos aquí designados se deben usar con un [conocimiento previo](https://carlossanchezdonate.com/master-seo-tecnico/) en Apache y Regex y trabajar antes en un entorno de pruebas para evitar errores importantes.

### Variables

Elementos que pueden variar dependiendo del usuario o distintas cuestiones que nos pueden ser necesarios designar para distintas variables, aquí van los más útiles para SEO:

- HTTP_USER_AGENT: Representa la cadena del agente de usuario que está accediendo al servidor. Por ejemplo, el tipo de navegador o robot.
- REQUEST_URI: Es la URI que fue solicitada por el cliente. Por lo general, es la parte de la URL después del nombre del host.
- DOCUMENT_URI: Proporciona la URI final después de procesar las reescrituras o redirecciones.
- REQUEST_FILENAME: Ruta completa en el sistema de archivos al archivo solicitado.
- LAST_MODIFIED: La fecha y hora en que el recurso solicitado fue modificado por última vez.
- QUERY_STRING: Parte de la URI que sigue al signo de interrogación (?), que contiene los parámetros de la solicitud.
- THE_REQUEST: La línea de solicitud completa, tal como la ha recibido el servidor.
- REMOTE_ADDR: La dirección IP desde la que el usuario está viendo la página actual.
- REQUEST_STATUS: El estado de la solicitud, como el código de estado HTTP (por ejemplo, 200 para OK, 404 para no encontrado).
- TIME: El tiempo y fecha en formato numérico (YYYYMMDDHHmmss). Se puede segmentar en distintos times:

TIME_YEAR: El año actual (2024).
- TIME_MON: El mes actual (01-12).
- TIME_DAY: El día del mes (01-31).
- TIME_HOUR: La hora actual (00-23).
- TIME_MIN: El minuto actual (00-59).
- TIME_SEC: El segundo actual (00-59).
- TIME_WDAY: El día de la semana (0-6, donde 0 es domingo).



                ¿No lo estás entendiendo?
                Si quieres aprender a aplicar todo esto y mucho más, accede a mi formación:
                [¡Aprende SEO de verdad!](/master-seo-tecnico/)




### Ifmodule

Seguro que alguna vez has visto en un archivo .htaccess códigos similares a: *<IfModule mod_rewrite.c>*; *<IfModule mod_expires.c>* y un largo etcétera.

El Ifmodule es un condicional que permite que el código de dentro sea leído sólo en el caso de que esté dicho módulo activo, en el caso de no estarlo, el código será ignorado, evitando de esta forma que rompa la web.

### Rewrites

Los Rewrites, pertenecientes al popular módulo mod_rewrite.c son una herramienta muy potente para hacer todo tipo de reescrituras, que pueden ser:

- [Reescribir el código de respuesta para determinados user-agents.](https://carlossanchezdonate.com/articulo/bloquear-user-agents/)
- [Cambiar la versión de URL de una web.](https://carlossanchezdonate.com/articulo/http-https-www-nowww/)
- [Hacer redirecciones potentes.](https://carlossanchezdonate.com/articulo/generar-response-code/#redirecciones-con-rewritecond)
- [Redireccionar parámetros.](https://carlossanchezdonate.com/articulo/redireccionar-parametros-htaccess/)
- [Redireccionar caracteres especiales.](https://carlossanchezdonate.com/articulo/redireccion-caracteres-espacios/)
- Y muchas más.

Aunque se pueden aplicar más reglas dentro, hablaremos de las 3 principales:

#### RewriteEngine

Esta directiva es necesaria para activar las redirecciones, aunque solo es necesario ponerlo una vez en todo el documento .htaccess.

`RewriteEngine On`

#### RewriteCond

Como su nombre indica, es para seleccionar el condicional, para indicar qué elemento o variables queremos que sea redireccionado. Esto nos permite mucho juego, por ejemplo:

`RewriteCond %{HTTPS} off`

Ese RewriteCond seleccionaría toda URL que no tenga activado el https.

#### RewriteRule

Sería la regla a designar, es decir, qué hacemos con ese elemento que hemos seleccionado en el ReWriteCond. Siguiendo el ejemplo anterior, por ejemplo, podemos hacer que se redireccionen todas las versiones de la web que no tengan https a la versión que sí:

`

RewriteEngine On

RewriteCond %{HTTPS} off

RewriteRule (.*) https://master-testing.test/$1 [R=301,L,QSA]

`

### If

Permite meter ciertos tipos de condicionales usando los elementos designados arriba. Ejemplo:

`

`

### Header

Permite meter mensajes dentro del header, los cual nos servirán para el x-robots, para el canonical, para el hreflang o incluso para poner mensajes personalizados:

`

Header set Link "; rel='canonical'"

Header set X-Robots-Tag "noindex"

Header set X-Asdrubal "Pagina con el SEO revisado por Asdrubal SEO SL"

Header set Link "; rel='alternate' hreflang='es', ; rel='alternate' hreflang='en'"

`

Se recomienda usar con el código de arriba (If "%{THE_REQUEST}, de lo contrario nos afectará en todas las páginas.

### Files

Permite designar comandos para un archivo específico.

`

order deny,allow

deny from all

allow from 192.168.0.1

`

### FilesmAtch

Tiene la misma utilidad que files pero permite la inserción de regex. Por ejemplo, podemos hacer que todos los archivos .pdf tengan que ser descargados por el usuario. Así aunque el usuario ignore el atributo download de HTML porque tiene el enlace, forzamos al usuario a que descargue el archivo.

`

Header set Content-Disposition "attachment"

`

### ErrorDocument

Te permite designar el HTML de un código de respuesta personalizado:

`ErrorDocument 404 'Error 404 personalizadoPrueba a ver la web de Carlos Sánchez SEO'`

### Redirect

Sirve para [redirigir páginas de forma simple](https://carlossanchezdonate.com/recursos/redirecciones-servidor/htaccess/). Está la opción de Redirect y RedirectMatch, RedirectMatch permite la inserción de regex, lo cual permite hacer redirecciones en bulk minimizando el posible fallo humano.

### Expires

Estos comandos son pertenecientes al módulo mod_expires.c, y [sirven para designar la caché del usuario](https://carlossanchezdonate.com/articulo/cache-en-el-seo/).

### Authn_file

Es un módulo para [designar el acceso por contraseña en una web](https://carlossanchezdonate.com/articulo/bloquear-web-password/). Lo podemos configurar con el comando If para que solo afecte a nuestro entorno de desarrollo:

`



AuthUserFile C:\Users\****\*****\Github\master-testing\*******\.htpasswd

AuthName "Iniciar sesión requerido"

AuthType Basic

Require valid-user



`

### h2

Para poder configurar el http2 en apache y mejorar el [WPO](https://carlossanchezdonate.com/seo-avanzado/rendimiento-velocidad/), debemos ir al httpd conf tenemos que tener activado el http2: LoadModule http2_module modules/mod_http2.so y poner en el <IfModule ssl_module>:

`Protocols h2 http/1.1`

Artículos útiles sobre apache

- [Apache VS nginx](https://carlossanchezdonate.com/articulo/apache-o-nginx-en-el-seo/)
- [Generar códigos de respuesta en Apache](https://carlossanchezdonate.com/articulo/generar-response-code/)
- [Ponencia sobre optimización SEO desde Apache](https://carlossanchezdonate.com/noticia/gestion-de-servidores-para-seo-wordcamp-cartagena/)
- [Bloquear user-agents mediante el servidor](https://carlossanchezdonate.com/articulo/bloquear-user-agents/)
- [Implementar el X-Robots tag](https://carlossanchezdonate.com/articulo/x-robots-tag/)
- [Bloquear una web por contraseña desde el servidor](https://carlossanchezdonate.com/articulo/bloquear-web-password/)
- [Redirecciones de protocolo, www y barra slash en Apache](https://carlossanchezdonate.com/articulo/http-https-www-nowww/)
- [Configurar caché](https://carlossanchezdonate.com/articulo/cache-en-el-seo/)
- [Redireccionar de urls mayúsculas a minúsculas](https://carlossanchezdonate.com/articulo/url-mayusculas-y-minusculas/)
- [Redirecciones de caracteres especiales](https://carlossanchezdonate.com/articulo/redireccion-caracteres-espacios/)
- [Redirecciones con parámetros en Apache](https://carlossanchezdonate.com/articulo/redireccionar-parametros-htaccess/)
- [Implemetación de hreflang por HTTP](https://carlossanchezdonate.com/articulo/implementacion-hreflang/)
- [Limitar la calidad de las imágenes para Google](https://carlossanchezdonate.com/articulo/vinculos-intercalados-imagenes/)
- [Eliminar páginas en chino desde Apache](https://carlossanchezdonate.com/curiosidades/desindexar-paginas-chino-japones/)
- [Prevenir el cloaking](https://carlossanchezdonate.com/articulo/cloaking/)

## Bibliografía

- [Documentación oficial](https://httpd.apache.org/)


        Si te gusta este artículo, me ayudarías un montón compartiendo mi contenido:

        Compartir:


                [![Compartir en LinkedIn](https://carlossanchezdonate.com/wp-content/themes/sanchezdonate/images/rrss/linkedin.svg)](https://www.linkedin.com/cws/share/?url=https://carlossanchezdonate.com/articulo/apache/)



                [![Compartir en Twitter](https://carlossanchezdonate.com/wp-content/themes/sanchezdonate/images/rrss/tw.svg)](https://twitter.com/intent/tweet?url=https://carlossanchezdonate.com/articulo/apache/)



                [![Compartir en Facebook](https://carlossanchezdonate.com/wp-content/themes/sanchezdonate/images/rrss/facebook.svg)](https://www.facebook.com/sharer/sharer.php?u=https://carlossanchezdonate.com/articulo/apache/)



                [![Compartir en WhatsApp](https://carlossanchezdonate.com/wp-content/themes/sanchezdonate/images/rrss/whatsapp.svg)](whatsapp://send?text=https://carlossanchezdonate.com/articulo/apache/)



                [![Compartir en Telegram](https://carlossanchezdonate.com/wp-content/themes/sanchezdonate/images/rrss/tlg.svg)](https://telegram.me/share/url?url=https://carlossanchezdonate.com/articulo/apache/)





        No se te da mal el SEO Técnico

Te falta mi máster**. Accede a una formación avanzada que te permitirá aplicar e implementar SEO en cualquier tipo de WEB

        [¡Accede al Máster de SEO Técnico!](/master-seo-tecnico/)



  Tal vez te interesen otros artículos:
  [Artículos de SEO](/seo-avanzado/)





                [x-robots-tag](https://carlossanchezdonate.com/articulo/x-robots-tag/)







                [Sitemaps](https://carlossanchezdonate.com/articulo/sitemaps/)







                [Curación de enlaces en el SEO](https://carlossanchezdonate.com/articulo/curacion-de-enlaces-en-el-seo/)







                [Texto alternativo para imágenes](https://carlossanchezdonate.com/articulo/alt-imagenes/)







                [Rich Snippets con HTML](https://carlossanchezdonate.com/articulo/rich-snippets-sin-datos-estructurados/)
