Web.py URL映射不接受'/'

时间:2010-08-31 22:09:17

标签: python apache mod-wsgi web.py

所以我见过的每个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>

1 个答案:

答案 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的方法,这些方法不应该一起使用。

如果您的要求是其他要求,您将必须更清楚您想要发生的事情。

相关问题