lighttpd, mod_rewrite, web.py

1 投票
1 回答
695 浏览
提问于 2025-04-16 10:38

我在使用lighttpd和web.py的时候遇到一个小问题。在Apache2上运行得很好,但在lighttpd上有点小麻烦。

这是我为web.py设置的lighttpd配置

  fastcgi.server = ("/code.py" =>
    ((
      "socket" => "/tmp/fcgi.socket",
      "bin-path" => "/home/ivan/www/code.py",
      "max-procs" => 1,
      "check-local" => "disable",
    ))
  )

  url.rewrite-once = (
     "^/favicon.ico$" => "/static/favicon.ico",
     "^/static/(.*)$" => "/static/$1",
     "^/(.*)$" => "/code.py/$1"
   )

还有一个示例web.py,展示了我如何定义网址。

urls = (
  '/page', 'Page',
  '/', 'Index',
)

class Index(object):
  def GET(self):
    raise web.seeother('/page')

问题出现在当浏览器被重定向到example.org/page这个网址时。Apache2会正确地重定向到example.org/page,但是lighttpd却重定向到了example.org/code.py/page。我该如何解决这个小问题呢?我找到了解决办法,如果我写raise web.seeother(web.ctx.homedomain+'/page'),一切就正常了,但我想知道是否可以在lighttpd的配置文件中解决,而不需要改动web.py的代码。

谢谢,

1 个回答

0

在用fastcgi启动你的脚本之前,先设置一下

export REAL_SCRIPT_NAME=""

这样应该就能正常工作了。

撰写回答