我当前正在使用以下配置作为CGI运行CherryPy应用程序:
在Apache配置中:
# snip
ScriptAlias /myproject.cgi /var/www/mywebsite/myproject.cgi
<Directory /var/www/mywebsite>
Options +FollowSymLinks -MultiViews +ExecCGI
AllowOverride All
Order allow,deny
allow from all
</Directory>
在/var/www/mywebsite/.htaccess
中:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^acoolproject/?$ myproject.cgi [L]
RewriteRule ^acoolproject/(.*)$ myproject.cgi/$1 [L]
</IfModule>
Apache中的双重重定向似乎是多余的,但它的存在是有原因的。你知道吗
在/var/www/mywebsite/myproject.cgi
中:
#!/usr/bin/env python
import os
import sys
import cgi
import cgitb
import wsgiref.handlers
import main
cgitb.enable()
def application(env, start_response):
app = cherrypy.tree.mount(main.Main(), "/acoolproject", config=cherrypy_config)
return app(env, start_response)
if __name__ == '__main__':
wsgiref.handlers.CGIHandler().run(application)
在我的主应用程序main.py
中,在Main.default
方法中有以下调试信息:
class Main(object):
# snip
def default(self, *args, **kwargs):
return cherrypy.request.path_info
default.exposed = True
问题是,当我浏览到(或cURL到)“http://mywebsite.com/acoolproject”时,调试信息输出字符串“I”。因为这个“i”神秘地出现了,所以请求没有正确地路由到写处理程序,所有的事情最终都由default
处理程序处理。你知道吗
我已经检查了我的所有文件的一个打字错误或错误的网址与一个额外的“我”,找不到任何东西。发生这种事有什么原因吗?你知道吗
如果我将htaccess规则中的路径和装载点从acoolproject
更改为proj
,那么输出将变为“项目.cgi". 所以看起来CherryPy得到的URL路径类似于path_info = url[len(mount_point):]
。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐