gpt4 book ai didi

python - SCRIPT_NAME 与 apache cgid 模块中的 web.py 不匹配 REQUEST_URI

转载 作者:太空宇宙 更新时间:2023-11-03 19:02:32 27 4
gpt4 key购买 nike

我正在尝试使用 mod_cgid 模块在 Apache 中部署我的 web.py 应用程序。

我在 urls.py 中定义了这样的 url

urls = (
'/app/', 'index.index',
'/', 'index.index'
)

这是我的应用程序启动 webstart.py 的地方

import web, urls, sys, os
def notfound():
return web.notfound()
if __name__ == "__main__":
app = web.application(urls.urls, globals())
app.notfound = notfound
app.run()

我的 Apache 配置如下所示

<Directory "dirname">
Options +ExecCGI +FollowSymLinks +Indexes
Order allow,deny
Allow from all
Require all granted
DirectoryIndex webstart.py
</Directory>

当我尝试使用 localhost/app/访问我的服务器时,它总是显示未找到的页面,并且在日志中,我看到消息“警告:SCRIPT_NAME 与 REQUEST_URI 不匹配”

然后我尝试在未找到的页面中打印这两个变量,我分别得到了/app/webstart.py 和/app/。

当我使用 localhost/app/访问我的应用程序时,如何让它工作?

最佳答案

DirectoryIndex webstart.py

您已在 Apache 配置中指定了用于目录访问的默认主页。因此,当您访问某个目录(例如 URL)时,例如。 localhost/app/,Apache 将其视为 localhost/app/webstart.py,然后将请求发送到 web.py。尝试从 Apache 配置中删除该条目并重新启动 Apache 守护进程。

更新:

当你 deploy web.py through CGI ,您获得了服务器 http://localhost/webstart.py 的条目,前提是您已将 ScriptAliased / 作为您的 CGI脚本目录。 webstart.py 中的路由定义位于该 url 之后。因此,您应该访问 http://localhost/webstart.py/app/ 来获取 /app/ 路由。您需要一些 mod_rewrite 定义来获取像 http://localhost/app/ 这样的 URL。

关于python - SCRIPT_NAME 与 apache cgid 模块中的 web.py 不匹配 REQUEST_URI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15676467/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com