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

时间:2013-03-28 07:36:02

标签: python apache web.py

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

我在urls.py

中定义了这样的网址
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不匹配”

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

当我使用localhost / app /?

访问应用程序时,如何让我的应用程序工作

2 个答案:

答案 0 :(得分:1)

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的条目,前提是您已将ScriptAlias ed /作为您的CGI脚本目录。 webstart.py中的路由定义位于该url之后。因此,您应该访问http://localhost/webstart.py/app/路由/app/。您需要一些mod_rewrite定义才能获得http://localhost/app/

等网址

答案 1 :(得分:0)

无法解决此问题,因此使用了wsgi模块。我就这样做了...... http://dfourtheye.blogspot.in/2013/03/deploying-webpy-application-in-apache.html