我的两个子域没有正确路由。
这是我的中间件类
MIDDLEWARE_CLASSES = [
'subdomains.middleware.SubdomainURLRoutingMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
如您所见,SubdomainURL 路由中间件位于 Common 之上。
配置是这样的:
ROOT_URLCONF = 'deltaforce.urls'
SUBDOMAIN_URLCONFS = {
'api': 'errorPage.urls',
None: 'interface.urls',
}
问题是 abc.com 和 api.abc.com 都路由到 None/ interface.urls
。
我从每个页面的 404 页面中了解到相同的内容。deltaforce.urls
和之间的区别interface.urls
是默认管理控制台没有显示,这是一个很好的迹象,表明它没有使用ROOT_URLCONF
,但api
也显示出类似的行为,因为错误页面中唯一的页面是 404,我正在使用它来测试它。它的 404 页面显示了来自界面的 url 列表。
这里还有一些可能很重要的东西:
ALLOWED_HOSTS = [".abc.com"]
abc.com
和其他子域有一个/etc/hosts
文件,最后这一切都在一个 nginx 代理后面,它根据 404 页面上请求的 url 正确传递主机头。