与web.py匹配的URL

时间:2012-08-06 22:02:39

标签: python apache url web-applications web.py

我正在用apache和web.py编写一个简单的“Hello world”。该应用程序在我去

时有效
http://sandbox-dev.com/webapp/

但不是在我去的时候:

http://sandbox-dev.com/webapp

我的直觉(显然是错误的)是以下代码与这些地址中的任何一个匹配。

import sys, os
abspath = os.path.dirname(__file__)
sys.path.append(abspath)
os.chdir(abspath)

import web

urls = (
      '/.*', 'hello',
      )

class hello:
      def GET(self):
          return "Hello, web.py world."

application = web.application(urls, globals()).wsgifunc()

为了匹配这两者,我需要更改什么?

3 个答案:

答案 0 :(得分:3)

当网址为“http://sandbox-dev.com/webapp”时,web.py将其视为“”,而不是“/”。因此,将URL模式更改为“。*”将起作用。

但是,您可能应该在apache配置中修复它,而不是在webapp中修复它。添加规则以将/ webapp重定向到/ webapp /.

答案 1 :(得分:0)

如果您想通过 hello 类处理首页,您只需要:

urls = (
  '/', 'hello',
  )

或者我是否误解了你的意图?

答案 2 :(得分:0)

@Anand Chitipothu是对的。

http://sandbox-dev.com/webapp/ matches '/'

http://sandbox-dev.com/webapp matches '' #empty string

所以如果你想在webpy中修复它,你可以写:

urls = (
    '.*', 'hello'    #match all path including empty string
    )

或添加重定向类

urls = (
    '/.*', 'hello',  
    '', 'Redirect'
    )
class Redirect(object):
    def GET(self):
        raise web.seeother('/')    # this will make the browser jump to url: http://sandbox-dev.com/webapp/