如何在我的主域上安装Django应用程序,在子域上安装PHP应用程序?

时间:2011-06-20 09:26:30

标签: php django apache .htaccess

我的主域( example.com )上托管了一个Django应用程序,现在我需要在子域上托管一个PHP应用程序( forum.example.com )。

在主域的目录中,我有以下.htaccess条目:

SetHandler mod_python
PythonPath "/home/.../apps/example'] + sys.path"
PythonOption mod_python.importer.path "['/home/vlive/python']+ sys.path"
PythonHandler django.core.handlers.modpython

#PythonDebug On
SetEnv DJANGO_SETTINGS_MODULE example.settings
SetEnv PYTHON_EGG_CACHE /tmp/egg-cache

目前,当我加载子域名( forum.example.com )时,我仍然会看到主站点( example.com )。

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

您需要通过VirtualHost指令设置子域名,并且只在其中一个mod_python中添加mod_wsgi / VirtualHost处理程序。

你说你加载了子域,它仍然显示主站点。您介意向我们展示您的Apache的网站配置吗?

答案 1 :(得分:1)

选择错误VirtualHost的最常见原因是缺少NameVirtualHost指令,该指令匹配VirtualHost指令中指定的主机/端口限定符。

您设置了什么NameVirtualHost指令?两个VirtualHost配置的参数是什么?

总体布局如下:

NameVirtualHost *:80

<VirtualHost *:80>
ServerName example.com
...
</VirtualHost>

<VirtualHost *:80>
ServerName forum.example.com
...
</VirtualHost>

这些通常在Linux Apache发行版的同一文件中。

你用过什么?

答案 2 :(得分:0)

正如Graham所说,很可能你的VirtualHost配置错误。

仔细检查是否存在两个具有正确ServerName的不同VH,并且您不在ServerName和ServerAlias中使用可能与子域重叠的*(通配符),或者它在子域之后。 Apache只搜索匹配的第一个VH,所以如果你有类似* .example.com之类的东西,那么像forum.example.com这样的任何其他子域都不行。

django文档也建议使用mod_wsgi,考虑切换到它。