将子域指向Django中的特定URL

时间:2011-04-13 12:13:58

标签: django apache2 mod-wsgi virtualhost subdomain

我有一个Django站点,正在研究mod_wsgi和Apache。 (例如,example.com)我创建了一个子域(例如,info.example.com),并希望将其指向现有项目中的app。是否有可能,我有一个urls.py文件,example.com/info和info.example.com指向Django项目中的相同视图(不重复不同目录中的整个项目)?

如果是这样,我该怎么办?目前,现有项目的example.com virtalhost配置如下所示:

<VirtualHost 12.34.56.78:80>
   ServerName example.com
   ServerAlias www.example.com

   DocumentRoot /srv/www/Example/Pub_html

   WSGIScriptAlias / /srv/www/Example/example.wsgi
   <Directory /srv/www/Example/Example>
      Order allow,deny
      Allow from all
   </Directory>

   Alias /robots.txt /srv/www/Example/robots.txt
   Alias /favicon.ico /srv/www/Example/favicon.ico
   ....
</VirtualHost>

提前致谢!

更新:我通过创建另一个与现有项目共享数据库表和模板文件夹的Django项目来快速解决此问题。它有效,但它不是真的干:)

1 个答案:

答案 0 :(得分:1)

我估计,我会用反向代理执行此操作。如果您有mod_proxymod_proxy_html,请尝试以下操作:

<VirtualHost 12.34.56.78:80>
    ServerName info.example.com

    ProxyPass       /  http://example.com/info

    SetOutputFilter proxy-html
    <Location />
        ProxyPassReverse /info/
        ProxyHTMLURLMap /info/ /
    </Location>
    ProxyHTMLURLMap http://example.com/info /
</VirtualHost>

细节可能不太正确,所以如果你不能让它工作,请告诉我。