如何在一个域中运行两个Web应用程序?这可能吗


How to run two webapplication in a single domain? Is that possible?

我在 apache 服务器中配置了一个 php 应用程序,它以 www.example.com/api1 提供 api,现在我想在同一个域中运行我的 Django 应用程序,但像 www.example.com/api2 一样使用不同的路由。这可能吗?请给出您宝贵的解决方案和建议。

你可以将 Django 应用程序配置为在特定基本路径下提供所有 URL(在你的主urls.py中(。

您还必须配置您的 apache 服务器以将该基本路径的请求转发到 Django 应用程序。请参阅如何通过 django 和 php 在同一域上提供动态内容?

不要忘记配置settings.ALLOWED_HOSTS和站点(后者在"站点"下的管理UI中(。

https://docs.djangoproject.com/en/1.9/ref/settings/#allowed-hosts


注意:

确保你永远不要在任何代码中使用硬编码的URL,除了在urls.py文件中(作为Django应用程序的一般规则(。始终使用

  • reverse()reverse_lazy()在姜戈代码中,
  • 在您的模型上实现get_absolute_url()(使用 reverse() (,
  • static(或:staticfiles(在模板中。

如果您需要完整的URL(例如Facebook反向链接(,请使用request.build_absolute_uri()

这当然是可能的。我想你的 django 应用程序会侦听某个端口上的请求,通常是端口 80,但如果我理解正确,apache 已经在端口 80 上运行。

所以你要做的是配置你的 django 应用程序来监听不同端口号(例如 8080(上的请求,并在 apache (htaccess( 中创建一个路由,将所有请求转发到 www.example.com/api2 到运行 django 应用程序的端口号。

在您的htaccess中,这些内容应该可以工作:

RewriteCond %{REQUEST_URI} /api2
RewriteRule ^(.*)$ example.com:8080/$1 [NC,L]