2008-10-24 14 views
7

¿Cuál es la mejor manera de hacer barras inclinadas finales en la última versión de Rutas (1.10)? Yo actualmente estoy usando el claramente no DRY:Barra inclinada en Pylons Routes

map.connect('/logs/', controller='logs', action='logs') 
map.connect('/logs', controller='logs', action='logs') 

creo que convertir en la minimización haría el truco, pero tengo la impresión de que se ha desactivado en las nuevas versiones de las Rutas por una razón. Lamentablemente, la documentación no parece haberse puesto al día con el desarrollo de Rutas, por lo que no puedo encontrar ningún recurso bueno para visitar. ¿Algunas ideas?

+0

¿Cuál es su servidor web? – jonnii

Respuesta

7

Hay dos maneras posibles de resolver este:

  1. Do it entirely in pylons.
  2. Add an htaccess rule to rewrite the trailing slash.

Personalmente no me gusta la barra final, porque si usted tiene un URI como:

http://example.com/people

Usted debe ser capaz de obtener los mismos datos en formato XML a través de:

http://example.com/people.xml

+2

Las URL fáciles de adivinar son buenas, por lo que las personas deben poder ir a/people y/people/y ver lo mismo. Las URL canónicas también son buenas, por lo que una de ellas debe redirigirse a la otra. –

2

http://www.siafoo.net/snippet/275 tiene una pieza básica de middleware que elimina una barra al final de peticiones. Idea inteligente, y entendí el concepto de middleware en aplicaciones WSGI mucho mejor después de darme cuenta de lo que hace.

16

el siguiente fragmento añadido como la última ruta trabajó para mí:

map.redirect('/*(url)/', '/{url}', 
      _redirect_code='301 Moved Permanently') 
+0

Estoy 90% seguro de que lo encontré en algún lugar de la red, pero no puedo proporcionar una atribución adecuada en este momento. –

+0

Esto funciona y es mucho más simple que todas las otras soluciones. Usted se merece votos entusiastas, buen señor. –

+0

¡Esto funcionó muy bien! ¡Gracias! – John

Cuestiones relacionadas