Web.py URL映射不接受'/
我看到的每一个web.py教程里都有这一行:
urls = (
'/', 'index',
)
然后,后面会定义一个index类,里面有一个GET函数等等。我的问题是,这个不管用。用上面的代码,我得到了一个404错误。用下面的映射就能正常工作:
urls = (
'/.*', 'index',
)
但这样的话,至少一开始会捕捉到每一个可能的URL,而我只想让“index”处理访问网站根目录的请求。求助啊?
一些基本信息:
Python 2.6,web.py 0.3,Apache 2.2和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>
1 个回答
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的方法混在一起了,这些方法不应该一起使用。
如果你的需求是其他的,你需要更清楚地说明你想要实现的效果。