我在 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]