2008-10-24 14 views
7

Quelle est la meilleure façon de rendre les barres obliques de traînage sans importance dans la dernière version de Routes (1.10)? J'utilise actuellement la non-DRY clairement:Traînées obliques dans les Routes de Pylônes

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

Je pense que tourner la réduction sur ferait l'affaire, mais je suis sous l'impression qu'il a été désactivé dans les versions les plus récentes des routes pour une raison. Malheureusement, la documentation ne semble pas avoir rattrapé le développement de Routes, donc je ne trouve pas de bonnes ressources à consulter. Des idées?

+0

Quelle est votre serveur web? – jonnii

Répondre

7

Il y a deux façons possibles de résoudre ce:

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

Personnellement, je n'aime pas le slash, parce que si vous avez un uri comme:

http://example.com/people

Vous devriez être en mesure d'obtenir les mêmes données au format XML en allant à:

http://example.com/people.xml

+2

Les URL faciles à deviner sont bonnes, donc les gens devraient être autorisés à aller dans/people et/people/et voir la même chose. Les URL canoniques sont également bonnes, donc l'une d'elles devrait rediriger vers l'autre. –

2

http://www.siafoo.net/snippet/275 a un morceau de base de middleware qui enlève un slash des demandes. Idée astucieuse, et j'ai beaucoup mieux compris le concept de middleware dans les applications WSGI après avoir réalisé ce que cela faisait.

16

L'extrait suivant ajouté que la dernière voie a fonctionné pour moi:

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

Je suis sûr à 90% que je l'ai trouvé quelque part sur le net, mais je ne peux pas fournir une attribution correcte pour le moment. –

+0

Cela fonctionne et est beaucoup plus simple que toutes les autres solutions. Vous méritez des upvotes, bon monsieur. –

+0

Cela a bien fonctionné! Merci! – John