将子域指向 Django 中的特定 url

发布于 2024-11-01 04:37:38 字数 821 浏览 8 评论 0原文

我有一个 Django 站点,正在使用 mod_wsgi 和 Apache。 (例如,example.com)我创建了一个子域(例如,info.example.com)并希望将其指向现有项目中的应用程序。我是否有可能有一个 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 项目。它可以工作,但它并不真正干燥:)

I have a Django site, working on mod_wsgi and Apache. (eg, example.com) I made a subdomain (eg, info.example.com) and want to point it to app in the existing project. Is it possible, that I have one urls.py file, and example.com/info and info.example.com point to the same view in Django project (without duplicating the whole project in different directory)?

If so, how can I do it? Currently the example.com virtalhost config for the existing project looks like this:

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

Thanks in advance!

UPDATE: I did a quick fix here by creating another Django project which shares database tables and template folder with the existing one. It works, but it's not really DRY :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

南巷近海 2024-11-08 04:37:38

我想我会用反向代理来做到这一点。如果您有 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>

详细信息可能不太正确,所以如果您无法使其工作,请告诉我。

I'd do this with a reverse proxy, I reckon. If you have mod_proxy and mod_proxy_html available, try something like this:

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

the details may not be quite right, so let me know if you can't get it to work.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文