2008-10-24 8 views
7

Was ist der beste Weg, um Trailing Slashes in der neuesten Version von Routes (1.10) egal zu machen? Ich bin derzeit mit dem deutlich nicht-DRY:Nachlaufende Schrägstriche in Pylonen Routen

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

Ich denke, dass auf der Minimierung dreht den Trick tun würde, aber bin unter dem Eindruck, dass es in den neueren Versionen von Routen aus einem Grunde deaktiviert wurde. Leider scheint die Dokumentation die Routes-Entwicklung nicht eingeholt zu haben, so dass ich keine guten Ressourcen finden kann. Irgendwelche Ideen?

+0

Was ist Ihr Webserver? – jonnii

Antwort

7

Es gibt zwei Möglichkeiten, dieses Problem zu lösen:

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

Persönlich mag ich nicht den Schrägstrich, denn wenn man ein uri wie hat:

http://example.com/people

sollten Sie in der Lage sein, die gleichen Daten im XML-Format zu erhalten, indem Sie zu gehen:

http://example.com/people.xml

+2

Leicht zu erratende URLs sind gut, also sollte es Leuten erlaubt sein, zu/people und/people/zu gehen und dasselbe zu sehen. Canonical URLs sind auch gut, also sollte einer von ihnen zum anderen umleiten. –

2

http://www.siafoo.net/snippet/275 hat ein Grundstück von Middleware, die eine Schrägstrich von Anfragen entfernt. Clevere Idee, und ich habe das Konzept der Middleware in WSGI-Anwendungen viel besser verstanden, nachdem ich erkannt habe, was das bedeutet.

16

folgenden Ausschnitt als letzte Route hinzugefügt arbeitete für mich:

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

Ich bin zu 90% sicher, dass ich es irgendwo im Netz gefunden habe, aber ich kann im Moment keine korrekte Zuordnung bereitstellen. –

+0

Das funktioniert und ist viel einfacher als alle anderen Lösungen. Sie verdienen Upvotes, guter Herr. –

+0

Das hat super funktioniert! Vielen Dank! – John