python - lighttpd、mod_rewrite 和 web.py 意外行为

标签 python mod-rewrite lighttpd web.py

我已经将 lighttpd 配置为与 web.py 一起工作。现在我想通过我的 web.py 脚本处理 mysite.com/scripts/* 形式的所有请求。这是 lighttpd.conf 的相关部分的样子:

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

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

我设置了一个简单的 code.py 来打印 URL 中出现的内容。这是代码:

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

app = web.application(urls, globals(),True)

class hello:
    def GET(self, x):
        return "I have received: " + web.websafe(x)

当我输入 mysite.com/code.py/test 时,我看到 “我已收到:/test”,这是正确的,但是当我输入 < strong>mysite.com/scripts/test,我看到“我收到了:/scripts/test”

我期待重写规则匹配/scripts/之后的内容并将 URL 重写为/code.py/test,为什么它也通过了/scripts 部分?

最佳答案

"/scripts/test""/test"(.*) 整体匹配。如果你只想匹配两个 URL 的 "test" 部分,你可以这样写。

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

app = web.application(urls, globals(), True)

class hello(object):
  def GET(self, x, y):
    return 'i have received ' + web.net.websafe(y)

关于python - lighttpd、mod_rewrite 和 web.py 意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4533109/

相关文章:

python - 如何将泰米尔语unicode值数组转换为带有空格的python中的泰米尔语字符串?

php - PHP 上 REST API 的 mod_rewrite

.htaccess - 需要一种通用的方法来创建 SEO 友好的 URL

django - 在Django生产教程上提供静态文件

python - 当模型位于不同应用程序中时,ManytoMany 字段 django 模板

python - 正则表达式从日期范围中提取两个日期

python - 如何根据索引从 Python 列表中同时删除多个值?

Apache mod_rewrite 域到子域?

php - 如何在lighttpd 中执行mysqldump?使用 PHP

Lighttpd:让子路径指向不同的文档根目录