2

私はwebapp2ルーティングについて奇妙な感覚を持っています。それが理由です。以下の例では、私のサイトのニュース マッピングからの覗き見があります。

問題は、一部のキーではstrict_slash=Trueがうまく機能し (301 を生成)、別のキーではまったく機能しない (404) のはなぜですか?

from webapp2 import WSGIApplication, Route as url
from webapp2_extras.routes import (PathPrefixRoute as patterns, 
                                   RedirectRoute as rurl)

from .views import (MainHandler)
from .views_news import (NewsAllHandler, NewsAnnualHandler, NewsMonthlyHandler, 
                         NewsDailyHandler, NewsTagsHandler, NewsTagHandler, 
                         NewsHandler)

app = WSGIApplication([
    url('/', MainHandler, 'main'),
    patterns('/news', [
        rurl('/', NewsAllHandler, 'news_all', 
             strict_slash=True), # here wont work /news isn't /news/ — get 404
        patterns('/tags', [
            rurl('/', NewsTagsHandler, 'news_tags', 
                 strict_slash=True), # works well /tags 301 redirects to /tags/
            rurl('/<tag:[\w\d-]+>/', NewsTagHandler, 'news_tag', 
                 strict_slash=True),
        ]),
        patterns('/<year:\d{4}>', [
            rurl('/', NewsAnnualHandler, 'news_year', 
                 strict_slash=True), # works well /d{4} 301 redirects to /d{4}/
            rurl('/<month:\d{2}>/', NewsMonthlyHandler, 'news_month', 
                 strict_slash=True),
            rurl('/<month:\d{2}>/<day:\d{2}>/', NewsDailyHandler, 'news_day', 
                 strict_slash=True),
            rurl('/<month:\d{2}>/<day:\d{2}>/<slug:[\w\d-]+>/', NewsHandler, 'news', 
                 strict_slash=True),
        ]),
    ]),
], debug=True)

私は何かを見逃していますか?私を助けてください、それは私を驚かせています!

4

1 に答える 1