所以我见过的每个web.py教程都包含这一行:
urls = (
'/', 'index',
)
然后,稍后,索引类使用GET函数定义,依此类推。我的问题是,这不起作用。使用上面的代码,我得到404错误。使用以下映射工作:
urls = (
'/.*', 'index',
)
但是,至少在开始时,每个可能的URL都会被捕获,我只想通过“索引”来处理对域根的访问。 HALP?
一些基本信息:
Python 2.6,web.py 0.3,Apache 2.2 with mod_wsgi
不确定还有什么用处,所以如果有重要内容我可以添加(来自Apache的VirtualHost,也许?)请询问,我会在这里添加。
编辑:包括我的Apache VirtualHost配置:
<VirtualHost *:80>
ServerName dd.sp4.us
DocumentRoot /home/steve/www/nov2010/public/
ErrorLog /home/steve/www/nov2010/log/error.log
CustomLog /home/steve/www/nov2010/log/access.log combined
WSGIScriptAlias / /home/steve/www/nov2010/app
Alias /static /home/steve/www/nov2010/public
<Directory /home/steve/www/nov2010/app>
SetHandler wsgi-script
Options ExecCGI
</Directory>
AddType text/html .py
<Location />
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !^/static
RewriteCond %{REQUEST_URI} !^(/.*)+code.py/
RewriteRule ^(.*)$ code.py/$1 [PT]
</Location>
</VirtualHost>
答案 0 :(得分:5)
背景阅读:
http://code.google.com/p/modwsgi/wiki/ConfigurationGuidelines
假设您只有一个WSGI应用程序要在站点的根目录下安装,只有静态文件或其他资源在/ static下,而不是:
WSGIScriptAlias / /home/steve/www/nov2010/app
Alias /static /home/steve/www/nov2010/public
<Directory /home/steve/www/nov2010/app>
SetHandler wsgi-script
Options ExecCGI
</Directory>
AddType text/html .py
<Location />
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !^/static
RewriteCond %{REQUEST_URI} !^(/.*)+code.py/
RewriteRule ^(.*)$ code.py/$1 [PT]
</Location>
使用:
Alias /static /home/steve/www/nov2010/public
WSGIScriptAlias / /home/steve/www/nov2010/app/code.py
<Directory /home/steve/www/nov2010/app>
Order allow,deny
Allow from all
</Directory>
您正在混合使用多种配置mod_wsgi的方法,这些方法不应该一起使用。
如果您的要求是其他要求,您将必须更清楚您想要发生的事情。