Redirección .htaccess, de una URL antigua y sucia a una URL nueva y limpia con parámetros

Redirección .htaccess, de una URL antigua y sucia a una URL nueva y limpia con parámetros

Tengo los siguientes 2 enlaces, no soy bueno con las reglas .htaccesstodavía.

Old URL: http://www.mywebsite.org.uk/donate/donate.php?charity_id=885&project_id=18111
New URL: http://new.mywebsite.org.uk/donation/to/885/18111

Quiero que todo el tráfico proveniente de la URL anterior a la nueva URL (incluidos los parámetros charity_id& project_id).

Estoy tratando de aprender las reglas de .htaccess, pero encuentro que los tutoriales en línea son un poco vagos.

Realmente me gustaría una explicación simple sobre las reglas de .htaccess.

(Dale un pescado a un hombre, aliméntalo por un día,Enseña a un hombre a pescar, aliméntalo para toda la vida.).

La respuesta correcta será la respuesta con una explicación sencilla y útil (¡junto con las reglas si es posible!).

Respuesta1

Para aprender a configurar reglas .htaccess, al menos necesita algunas habilidades de expresiones regulares y estar seguro de usar el módulo mod_rewrite de Apache, ya que resulta útil para crear reglas de reescritura gracias a su flexibilidad.

Si es así, tu código puede ser como

RewriteEngine On
RewriteCond %{QUERY_STRING} ^charity_id=([0-9]+)&project_id=([0-9]+)$
RewriteRule donate/donate.php http://new.mywebsite.org.uk/donation/to/%1/%2? [L,R=301]

Enhttp://httpd.apache.org/docs/2.4/mod/mod_rewrite.html(para la versión 2.4 de Apache, elija una diferente si corresponde) hay disponible una referencia útil, por lo que debe comenzar desde ella, incluso para comprender mejor el código anterior.

Puedes pensar en él RewriteRulecomo el ladrillo para reescribir, de modo que cada regla lo use al menos una vez. Agregará antes RewriteCondcuando necesite verificar las variables de entorno o hacer referencia a los valores de la cadena de consulta, como en nuestro código.

Para colocar una referencia inversa en una cadena de sustitución procedente de la anterior, RewriteCondutilizará valores desde %1hasta ; %9Si necesita una referencia retrospectiva de la primera parte de sí RewriteRulemismo, utilizará .$1$9

Tenga en cuenta el signo de interrogación al final de la URL de sustitución, ya que es la forma de omitir la cadena de consulta; si falta, tendrá ?charity_id=885&project_id=18111al final de la nueva URL.

Respuesta2

En otra publicación, sysadmin1138 escribió una muy buena introducción a la reescritura de mods.

Puedes encontrar la publicación.aquí.

/EDITAR: Ejemplo:

old: http://example.com/path?var=val 
new: http://example.com/path/var/val

.htaccess

RewriteCond %{QUERY_STRING} ^(\w+)=(\w+)$
RewriteRule ^/path /path/%1/%2?

información relacionada