当前 URL 与其中任何一个都不匹配 - 使用多个站点

Posted

技术标签:

【中文标题】当前 URL 与其中任何一个都不匹配 - 使用多个站点【英文标题】:The current URL, , didn't match any of these - using multiple sites 【发布时间】:2011-09-25 08:49:32 【问题描述】:

我希望有多个 django 安装。一个在 /(工作正常),一个在 /adam。斜杠 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>

还有ajt1g09/bms/apache中的django.wsgi文件:

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()

最后,ajt1g09/bms 中的 urls.py 文件(清楚地显示 /admin 在那里):

从 django.conf.urls.defaults 导入 模式,包括,网址

#取消注释接下来的两行以启用管理员:来自 django.contrib 导入管理员 admin.autodiscover()

urlpatterns = 模式('', # 例子: # url(r'^$', 'bms.views.home', name='home'), # url(r'^bms/', 包括('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)), )

我不知道问题是什么。

【问题讨论】:

通过在虚拟主机中交换别名指令,我设法走得更远。不再有任何空逗号。相反:当前 URL,adam/admin,与其中任何一个都不匹配。这意味着我需要编辑 urls.py 中的每个 url。确定不是这样吗? 您不需要指向完整 Python 安装的站点包。 “sys.path.append('/usr/local/lib/python2.7/site-packages')”。这表明如果需要,您的 mod_wsgi/Python 设置可能有问题。 我很确定它不是必需的 【参考方案1】:

你不应该使用:

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 匹配所基于的那些。

【讨论】:

嗨,格雷厄姆。根据您的两个建议,我得到完全相同的错误(使用 apache 重启) 用 'code.google.com/p/modwsgi/wiki/…' 中记录的替换您的 WSGI 脚本,并验证传递给 WSGI 应用程序的 SCRIPT_NAME 和 PATH_INFO 是什么。在此处发布这些人的价值观。

以上是关于当前 URL 与其中任何一个都不匹配 - 使用多个站点的主要内容,如果未能解决你的问题,请参考以下文章

当前 URL app/ 与其中任何一个都不匹配

Django - 当前的 URL 与这些中的任何一个都不匹配

当前路径 chat/room/1/ 与其中任何一个都不匹配

当前路径,与其中任何一个都不匹配

找不到页面 (404) 请求方法:GET .......当前路径,博客/博客文章,与其中任何一个都不匹配

当前路径 Envs/python-projects/learnpy/static/styles/bootstrap4/bootstrap.min.css 与其中任何一个都不匹配