我遇到了URI路由问题。
http://www.example.com - OK
http://www.example.com/en - 404
http://www.example.com/bm - 404
http://www.example.com/my - 404
http://www.example.com/zh - 404
http://www.example.com/cn - 404
它似乎忽略了我的第二条路线,我的路线出了什么问题?
app = webapp2.WSGIApplication([
routes.DomainRoute(r'<:(localhost|example\.com|www\.example\.com)>', [
webapp2.Route('/', handler=WebHome, name='WebHome'),
webapp2.Route('/(en|bm|my|cn|zh)', handler=WebHome, name='WebHome'),
webapp2.Route('/(en|bm|my|cn|zh)/', handler=WebHome, name='WebHome'),
]),
routes.DomainRoute(r'<:(m2.example.com|m.example.com)>', [
webapp2.Route('/', handler=MobileHome, name='MobileHome'),
webapp2.Route('/(en|bm|my|cn|zh)', handler=MobileHome, name='MobileHome'),
webapp2.Route('/(en|bm|my|cn|zh)/', handler=MobileHome, name='MobileHome'),
]),],
debug=True)
我的webhome课程
class WebHome(webapp2.RequestHandler):
def get(self, language='en'):
buf = 'home for %s' % (language,)
self.response.write(buf)
答案 0 :(得分:1)
webapp2.Route
使用<
和>
,而不是括号。此外,如果name
参数全部使用相同的handler
,则只选择一个路由:
app = webapp2.WSGIApplication([routes.DomainRoute(r'<:(localhost|mysite\.com|www\.mysite\.com)>', [
webapp2.Route('/', handler=WebHome),
webapp2.Route('/<language:en|bm|my|cn|zh>', handler=WebHome),
webapp2.Route('/<language:en|bm|my|cn|zh>/', handler=WebHome, name='WebHome'),
]),
routes.DomainRoute(r'<:(m2.mysite.com|m.mysite.com)>', [
webapp2.Route('/', handler=MobileHome),
webapp2.Route('/<language:en|bm|my|cn|zh>', handler=MobileHome),
webapp2.Route('/<language:en|bm|my|cn|zh>/', handler=MobileHome, name='MobileHome'),
]),], debug=True)