
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 RewriteRule
como el ladrillo para reescribir, de modo que cada regla lo use al menos una vez. Agregará antes RewriteCond
cuando 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, RewriteCond
utilizará valores desde %1
hasta ; %9
Si necesita una referencia retrospectiva de la primera parte de sí RewriteRule
mismo, 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=18111
al 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?