
  


---
title: "Generar códigos de respuesta o response codes - Carlos Sánchez"
description: "Los códigos de respuesta son importantes para el posicionamiento web. Descubre como generar los códigos de respuesta desde apache o desde nginx"
author: "Carlos Sánchez"
url: https://carlossanchezdonate.com/articulo/generar-response-code/
image: https://carlossanchezdonate.com/wp-content/uploads/tb-gen-responsecode.jpg
---





# Generar códigos de respuesta con Apache




                Forzar y generar códigos de respuesta con apache desde .htaccess






![Generar códigos de respuesta con Apache](https://carlossanchezdonate.com/wp-content/uploads/cover-gen-responsecode.jpg)




**Autor:**

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


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




**Fecha de publicación:**

        : 2023-01-02



**Última revisión:**

        : 2024-04-24




        **Índice**
                mostrar


        1
                Forzar códigos de estado con Redirectmatch
        2
                Rewritecond y rewriterule
        2.1
                Redirecciones con RewriteCond
        2.2
                Respuesta de Error
        3
                Códigos de respuesta especiales
        3.1
                Generar un 103 Early Hint

Tengo una publicación acerca de los [códigos de respuesta](https://carlossanchezdonate.com/articulo/codigos-de-respuesta/) o códigos de estado, cómo funcionan y cómo afectan a los motores de búsqueda dependiendo de su numeración.

No obstante, una vez se sabe que hacen, es importante saber forzarlos o generarlos a conveniencia en [cualquier URL de un proyecto que se trabaje](https://carlossanchezdonate.com/articulo/sintaxis-de-urls/).

Para generar cualquier código de respuesta desde [apache](https://carlossanchezdonate.com/articulo/apache/), no hay más que hacer ciertos [ajustes en el archivo .htaccess](https://carlossanchezdonate.com/articulo/redirecciones-htaccess-wpo/) del proyecto a optimizar. Os enseño distintas vías de hacerlo:

## Forzar códigos de estado con Redirectmatch

Con RedirectMatch es la forma más sencilla de generar códigos de respuesta. Como se puede ver en mi [generador de redirecciones](https://carlossanchezdonate.com/recursos/redirecciones-servidor/htaccess/), se puede hacer una redirección 301, simplemente poniendo:

- RedirectMatch
- El código de respuesta, en este caso 301
- **La URL a redirigir**
- La URL destino

Quedando un código así:

`RedirectMatch 301 ^/seo-avanzado/seo-avanzado/$ https://carlossanchezdonate.com/seo-avanzado/

`

La cuestión es que esto no solo sirve para emplear una redirección, sino para cualquier código de respuesta. Por lo que se pueden generar códigos de respuesta 410, 404 o 503 por ejemplo:

`# Esta página nunca ha existido

RedirectMatch 404 ^/wp-sitemap.xml$

# Esta página ya no existe

RedirectMatch 410 ^/servicios/desarrollo-web/$

# La web está en mantenimiento

RedirectMatch 503 ^(.*)$ `

De esta forma, con RedirectMatch cubrimos un amplio abanico que nos permite generar redirecciones en casi cualquier URL. Menos para casos especiales como los de las [URL con parámetros](https://carlossanchezdonate.com/articulo/redireccionar-parametros-htaccess/) donde hay que utilizar comandos más potentes como el RewriteCond.

## Rewritecond y rewriterule

Hay casos donde el RedirectMatch se nos puede quedar corto. Ya que por ejemplo queremos generar algún código de respuesta específico ya sea para parámetros, o para usuarios que vengan utilizando un user-agent específico.

El RewriteCond no solo es muy potente, sino que permite un gran número de condiciones las cuales se pueden encontrar en la [documentación oficial de apache](https://httpd.apache.org/docs/2.4/mod/mod_rewrite.html).

Para entenderlo y saber hacerlo, es más sencillo de comprender viendo un ejemplo de código de forma práctica.

### Redirecciones con RewriteCond

`

RewriteCond %{REQUEST_URI} ^/ejemplo/

RewriteRule (.*) $1otraurl/ [R=302,L,QSD]

`

En este caso se puede ver como se genera una redirección 302 por medio de ese condicional de rewrite ([se pueden ver más ejemplos prácticos del mod_rewrite aquí](https://carlossanchezdonate.com/articulo/redireccionar-parametros-htaccess/)).

Donde se puede apreciar que en el rewrite se especifican las [flags](https://httpd.apache.org/docs/2.4/rewrite/flags.html) (lo que está entre corchetes) que es lo que genera el código de respuesta).

### Respuesta de Error

Se pueden generar códigos de respuesta como 401 dependiendo del user-agent y permitiendo prescindir del [robots.txt](https://carlossanchezdonate.com/articulo/hacer-robots-txt/) para este propósito. Por ejemplo:

`#Activamos el RewriteEnginge

RewriteEngine On

#Definimos los condicionales, como en este caso hipotético, la URL y los User-Agents

RewriteCond %{HTTP_USER_AGENT} ^.*(noxtrumbot|MSIECrawler|WebCopier|ChinaClaw|WebCopier.*v3.2a).*$ [NC]

RewriteCond %{REQUEST_URI} ^/seo-avanzado/ [NC]

#Generamos la respuesta 401

RewriteRule ^.*$ - [F,L]

#También se puede poner el R= con el código de respuesta que suele ser más fácil

#RewriteRule ^(.*)$ /$1 [R=503,L]

#En este caso he puesto un 401 personalizado, que se puede hacer insertando el HTML en Apache, aunque no es la forma más ótima

ErrorDocument 401 '401 No autorizado>Error 401 No autorizadoNo est&aacutes autorizado para acceder a esta p&aacutegina y lo sabes, mala suerte.'

#Se podría hacer con una URL específica:

# ErrorDocument 401 /401_error.html`

También se puede hacer esto para [prevenir el hotlinking](https://carlossanchezdonate.com/articulo/vinculos-intercalados-imagenes/).

`

RewriteEngine On

RewriteCond %{HTTP_REFERER} !^https://web-random\.com/ [NC]

RewriteRule ^.*$ - [R=204,NC,L]

ErrorDocument 204 ''

`

## Códigos de respuesta especiales

### Generar un 103 Early Hint

Está el [103 Early Hints](https://carlossanchezdonate.com/articulo/early-hints/), que de la serie 1xx en el único código de respuesta que merecería forzar. Pero en este caso, no valdría con un redirectmatch o con un rewrite, ya que lo único que pretendemos es que la web precargue ciertos recursos antes si quiera de que la web HTML tenga que dar un código de respuesta 200, entonces de nada sirve forzar una URL en concreto.

Para que esta funcione, primero tenemos que tener habilitado el [h2Push](https://httpd.apache.org/docs/2.4/mod/mod_http2.html#h2push) y el h2EarlyHints. También hay que tener en cuenta que solo tendrá efecto en conexiones [HTTP/2 (y entiendo que HTTP/3 pero no lo puedo confirmar)](https://carlossanchezdonate.com/curiosidades/version-protocolo-http/):

`# Por defecto debería estar habilitado:

H2Push on

# Es bastante probable que no esté habilitado:

H2EarlyHints on`

Entonces, con todo activado para que funcione de forma óptima, la forma de configurarlo sería la siguiente:

Utilizar un Location (para una URL específica) o un LocationMatch (para un conjunto de URL con regex) donde se quiera activar este early hint, y dentro por medio de un H2PushResource, las fuentes a precargar. Ejemplo:

`

H2PushResource /wp-content/themes/sanchezdonate/carlos/css/main.css

H2PushResource /scripts/ejemplo.js

`


        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/generar-response-code/)



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



                [![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/generar-response-code/)



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



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





        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/)





                [AIO o GEO. EL SEO enfocado en LLMs](https://carlossanchezdonate.com/articulo/aio-o-geo-el-seo-enfocado-en-llms/)







                [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/)
