Pregunta

Todo,

Me he encontrado con un poco interesante peculiaridad en una de mis RewriteRules, que yo quería resolver por el uso de referencias anteriores con nombre. Sin embargo por lo que puedo ver, esto no es posible en el mod_rewrite de Apache.

Tengo dos direcciones URL entrantes, cada una conteniendo una variable clave, que necesita ser reescrito para el mismo marco de acción subyacente.

direcciones URL entrantes:

/users/list/page-2
/users/list/2

reescritura deseado de punto final

  

/? = Módulo de usuarios & action = lista y pagenum = 2

Me hubiera gustado hacer algo como esto

  

RewriteRule ^ / (? P ([\ w] +)) / (P ([\ w] +)?) / (Página -)?? (P ([\ d] +)) $ /? module = $ {} módulo y la acción = $ {acción} & pagenum = $ {} pagenum [L, QSA]

Sin embargo Apache simplemente no quiere jugar así en absoluto, y me da los valores nulos en los lugares de las referencias hacia atrás con nombre. Para llegar a mi alrededor el problema que he usado referencias numéricas a los grupos capturados ($ 1, $ 2, $ 4) (pero estoy casi a medio camino de la N = 9 Apache límite). Así que esto no es un tapón de la demostración para mí.

Me gustaría simplemente saber, si el nombre de referencias hacia atrás están disponibles en el mod_rewrite de Apache, y si lo son, ¿por qué el patrón de mi RewriteRule no coinciden?

Gracias, Ian

¿Fue útil?

Otros consejos

Si la última respuesta de @ superespacio no funciona, lo que sugeriría es encaminar todos los enlaces que no están en los archivos / directorios directos y encaminarlos a una página de índice. A continuación, configurar una clase de enrutamiento que se lleva en el nombre de la página y hace comparaciones de manual, lo que puede tener la matriz de captura de expresiones regulares llamado y la lista de las plantillas o páginas que desee alimentación.

Si usted tiene que ir por este camino, que me haga saber y puedo ofrecer algo de código de mis clases.

No hay referencias hacia atrás al parecer, después de mirar en la fuente mod_rewrite.

Me gustaría recomendar el uso de la opción RewriteMap todos modos en lugar de una larga lista de RewriteRules, ya que será mucho más rápido que la iteración a través de una larga lista.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top