Текущий URL не соответствует ни одному из них - используется несколько сайтов - PullRequest
2 голосов
/ 29 июня 2011

Я хочу иметь несколько установок django.Один в / (который работает нормально) и один в / Адам.Тот, что в slash adam, правильно перенаправляется apache, пока вы не попытаетесь посетить приложение.Например, / admin работает, но / adam / admin не работает.Я получаю сообщение об ошибке:

Page not found (404)
Request Method: GET
Request URL:    http://[CENSORED]/adam/
Using the URLconf defined in bms.urls, Django tried these URL patterns, in this order:
^admin/doc/
^admin/
The current URL, , didn't match any of these.

Обратите внимание на пустые запятые.Виртуальный хост apache:

<VirtualHost *:80>

    ServerName [CENSORED]
    DocumentRoot /home/user/bms

    Alias /static/admin/ /usr/local/lib/python2.7/site-packages/Django-1.3-py2.7.egg/django/contrib/admin/media/

    <Directory /home/user/bms/apache>
        Order allow,deny
        Allow from all
    </Directory>

    <Directory /home/ajt1g09/bms/apache>
        Order allow,deny
        Allow from all
    </Directory>

    WSGIDaemonProcess bms user=user group=user processes=2 threads=25 python-path=/usr/local/lib/python2.7/site-packages
    WSGIProcessGroup bms
    WSGIScriptAliasMatch ^/adam(.*) /home/ajt1g09/bms/apache/django.wsgi
    WSGIScriptAlias / /home/user/bms/apache/django.wsgi

</VirtualHost>

И файл django.wsgi в ajt1g09 / bms / apache:

import os
import sys

path = '/home/ajt1g09/bms'
if path not in sys.path:
    sys.path.append(path)

sys.path.append('/usr/local/lib/python2.7/site-packages')
sys.path.append('/home/ajt1g09')

os.environ['DJANGO_SETTINGS_MODULE'] = 'bms.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

И, наконец, файл urls.py в ajt1g09 / bms (четко показывает / admin там есть):

из django.conf.urls.defaults импортируйте шаблоны, включите, url

# Раскомментируйте следующие две строки, чтобы включить admin: from django.contrib import admin admin.autodiscover ()

urlpatterns = Patterns ('', # Примеры: # url (r '^ $', 'bms.views.home', name = 'home'), #url (r '^ bms /', include ('bms.foo.urls')),

# Uncomment the admin/doc line below to enable admin documentation:
url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

# Uncomment the next line to enable the admin:
url(r'^admin/', include(admin.site.urls)), )

Понятия не имею, в чем проблема.

1 Ответ

2 голосов
/ 30 июня 2011

Вы не должны использовать:

WSGIScriptAliasMatch ^/adam(.*) /home/ajt1g09/bms/apache/django.wsgi

Просто используйте:

WSGIScriptAlias /adam /home/ajt1g09/bms/apache/django.wsgi

WSGIScriptAliasMatch не будет работать так, как написано, потому что вы не заменили сопоставленную часть сзадив последний аргумент.Т.е.,

WSGIScriptAliasMatch ^/adam(.*) /home/ajt1g09/bms/apache/django.wsgi$1

Вы должны просто не использовать WSGIScriptAliasMatch.Это только для расширенных случаев использования и требует от вас очень осторожного использования, потому что то, как вы его используете, может повлиять на то, что для SCRIPT_NAME / PATH_INFO задано при передаче в приложение, и именно на них основано сопоставление urls.py.

...