Usando mod_rewrite para redirigir páginas individuales

Usando mod_rewrite para redirigir páginas individuales

El primer requisito era redirigir el tráfico desde http://www.old-domain.orghacia https://example.press, pero sólo hacerlo para la raíz del dominio; cualquier página específica debería estar disponible en el dominio anterior.

Así que estudié un poco y esto funcionó:

RedirectMatch "^/$" "https://example.press"

(suficientemente interesante,https://htaccess.madewithlove.be/afirmó que no funciona...)

Luego, llegó la siguiente solicitud: redirigir también a otra URL, de la forma:

http://www.old-domain.example/site/index.php?act=news

, pero de tal manera que si se solicita alguna noticia específica no sea redirigida (por ejemplo, http://www.old-domain.org/site/index.php?act=news&id=12345)

Esto resultó ser un gran desafío. Muchos documentos y artículos mencionan que esto no es posible con las directivas Redirect/ RedirectMatch, pero sí es posible con RewriteCond+ RewriteRule, lo que reuní debería verse así:

<IfModule mod_rewrite.c>
          RewriteEngine On
          RewriteCond %{QUERY_STRING} act=news
          RewriteRule ^(.*)$ https://example.press [R=302,L]
</IfModule>

(de nuevo,https://htaccess.madewithlove.be/afirma que funciona)

Sin embargo, nada parece funcionar. No se están produciendo redirecciones. Algún concepto erróneo evidentemente obvio de mi parte, ¿eh?

Respuesta1

Creo que esto funcionará:

<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{QUERY_STRING} act=news RewriteCond %{QUERY_STRING} !act=news&id=12345 RewriteRule ^(.*)$ https://example.press/ [R=302,L] RewriteRule ^/$ https://example.press/ [R=302,L] </IfModule>

Hay dos reglas y la primera regla tiene dos condiciones. El segundo condicional de la primera regla utiliza el !operador para negar la coincidencia en act=news&id=12345. Hay un "Y" implícito entre los condicionales de la primera regla, por lo que ambos deben ser verdaderos.

La segunda regla coincide entonces /solo con la página, sin condiciones.

información relacionada