2011-05-18 13 views
13

Actualmente uso:reescritura .htaccess pasar todas las cadenas de consulta a través

RewriteRule ^([^/\.]+)/?$ page.php?page=$1 [L] 

que es bueno para una cadena de consulta al pasar a través.

¿Pero hay una forma de pasar todas las cadenas de búsqueda? es decir, solicitar de una página podría ser:

domain.com/contact?course=23 

y otro puede ser:

domain.com/contact?workshop=41 

por eso es necesario saber cuál es el nombre de la cadena de consulta es, pero sólo alguna vez uno se pasará en un momento

Respuesta

28

Si entiendo bien su pregunta, sólo se puede añadir el [QSA] (query string append) flag hasta el final de su RewriteRule

RewriteRule ^([^/\.]+)/?$ page.php?page=$1 [L,QSA] 

Este procesará su solicitud lo que ya has hecho, y añadir cualquier params adicionales en la cadena de consulta fin.

+0

Gracias - ¡funcionó muy bien! :-) – Shane

1

Esto es lo que hago.

RewriteRule ^((/?[^/]+)+/?)$ ?q=$1 [L]

Ahora toda la parte que sigue es domain.com/ en $_GET['q'] en index.php. P.ej. si solicita domain.com/articles/12, q contiene articles/12. Entonces es trivial analizarlo con, por ejemplo, explode('/', $_GET['q']).

+0

Gracias - estuvo cerca, pero prefiere el método de @ Michael ... – Shane

Cuestiones relacionadas