¿Puedes tener un condicional en el archivo htaccess?

1 minuto de lectura

Avatar de usuario de Sylar
Sylar

He estado buscando en la web para agregar una regla de producción en el .htaccess archivo. Tengo un sitio web de wordpress; uno para la producción y el otro para la puesta en escena.

Cuando se carga un archivo, va a AWS (s3). Necesito evitar este comportamiento para la puesta en escena.

El código que establece la ruta del activo es, en el .htaccess archivo:

RewriteRule ^wp-content/uploads/(.*)$ https://s3-eu-west-1.amazonaws.com/<BUCKET-NAME>/wp-content/uploads/$1 [R=301,L]

Parece que no puedo encontrar una “declaración if” o algún tipo de condición para usar. Sinceramente, creo que esto no es posible. ¿Lo es?

Solo necesito ejecutar ese código para la producción y no para la puesta en escena. La URL de ensayo es diferente de la producción.

Actualizado

Cada vez que uso lo siguiente, mi sitio web falla:

<If "-z req('Host') == 'www.<PRODUCTION>.com/'">
  RewriteRule ^wp-content/uploads/(.*)$ https://s3-eu-west-1.amazonaws.com/<BUCKET-NAME>/wp-content/uploads/$1 [R=301,L]
</If>

If La directiva funciona en Apache 2.4 y versiones más recientes. En versiones inferiores puedes usar RewriteCond directiva para reescribir condicionalmente las URL.

Puedes usar algo como esto

RewriteEngine on
#if host == "www.production.com"
RewriteCond %{HTTP_HOST} ^www.production.com$ [NC]
 # execute the rule
 RewriteRule ^wp-content/uploads/(.*)$ https: //s3-eu-west-1.amazonaws.com/<BUCKET-NAME>/wp-content/uploads/$1 [R=301,L]

¿Ha sido útil esta solución?