Web.py URL Mapping не принимает '/' - PullRequest
1 голос
/ 01 сентября 2010

Итак, каждый учебник web.py, который я видел, содержит следующую строку:

urls = (
    '/', 'index',
)

А потом, позже, класс индекса определяется с помощью функции GET и так далее. Моя проблема в том, что это не работает. Используя код выше, я получаю ошибку 404. Использование следующих картографических работ:

urls = (
    '/.*', 'index',
)

Но это пойдет, по крайней мере, на первых порах, для каждого возможного URL, и я хочу, чтобы только доступ к корню домена обрабатывался «index». Halp

Некоторая базовая информация:

Python 2.6, web.py 0.3, Apache 2.2 с mod_wsgi

Не уверен, что еще было бы полезно, поэтому, если я могу добавить что-то важное (VirtualHost от Apache, может быть?), Пожалуйста, спросите, и я добавлю это сюда.

РЕДАКТИРОВАТЬ: Включая мою конфигурацию 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 голосов
/ 03 сентября 2010

Для фона читать:

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, которые не должны использоваться вместе.

Если ваши требования к чему-то другому, вам нужно будет прояснить, что вы хотите, чтобы произошло.

...