gpt4 book ai didi

python - 根目录上静态站点的 Apache 配置,子位置上的 Django 配置

转载 作者:行者123 更新时间:2023-11-30 23:15:01 27 4
gpt4 key购买 nike

我有一个 Django 应用程序,可以处理网站的两个(或更多)部分,例如网站的“admin”和“api”部分。我还为网站的其余部分提供了普通的 html 页面,其中不需要 Django。

例如,我希望将静态 html 站点放在站点的根目录中,并将 Django 应用程序放在某些子位置

www.example.com        -> Apache static html site
www.example.com/admin/ -> Django app, serving the pages for the admin
www.example.com/api/ -> Django app, serving the pages for the api
<小时/>

首先,我尝试从 Django 中执行此操作,使用如下网址:

# my_app/urls.py
...
url(r'^admin/', include('admin.urls')),
url(r'^api/', include('api.urls')),
url(r'^(?P<path>.*)$', ??????????),
...

但是我想不出一个好的方法来将这些静态页面的服务委托(delegate)给 Apache。 (如果我使用 url(r'^(?P<path>.*)$, 'django.views.static.serve', {'document_root': '/path/to/static/site'}) ,它确实有效,但 Django 文档禁止在生产服务器上使用它。)

<小时/>

然后我尝试使用 apache 配置:

# httpd.conf
...
DocumentRoot /path/to/static/site
WSGIScriptAlias /admin /path/to/django/my_app/wsgi.py
WSGIScriptAlias /api /path/to/django/my_app/wsgi.py
...

只要对 root 的请求返回静态站点,对“admin”和“api”的请求都会返回 Django 站点,但在 Django 中,我发现没有办法区分请求是否来自“/admin”或来自“/api”。 (另外,我不确定两个 WSGIScriptAlias 指向同一个 wsgi 是否会导致一些问题。)

<小时/>

如果有人知道一种无需将我的 Django 应用程序拆分为两个(或更多)部分即可实现此目的的方法,我们将不胜感激。

最佳答案

我遇到了几乎完全相同的问题。在站点使用的 Apache 虚拟主机配置中

WSGIScriptAliasMatch ^(/(admin|api)) /path/to/django/my_app/wsgi.py$1

而不是

WSGIScriptAlias /admin /path/to/django/my_app/wsgi.py
WSGIScriptAlias /api /path/to/django/my_app/wsgi.py

查看这些问答以获取更多信息:

Django (wsgi) and Wordpress coexisting in Apache virtualhost

Reconfiguring Apache to serve website root from new php source and specific sub-urls from old django site

关于python - 根目录上静态站点的 Apache 配置,子位置上的 Django 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28462245/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com