You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django项目Apache+WSGI部署:根URL自动添加尾斜杠问题

解决Apache+WSGI部署Django时自动添加尾斜杠失效的问题

我来帮你搞定这个自动加尾斜杠的问题,这在Apache搭配WSGI部署Django时确实是个容易踩的小坑,咱们一步步排查解决:

1. 先确认Django核心配置是否正确

首先得确保Django本身的自动加斜杠开关是打开的——默认情况下APPEND_SLASH是True,但万一被误改了呢?打开你的项目settings.py,找一下这个配置:

# settings.py
APPEND_SLASH = True

如果它被设成了False,改回True就行,这是Django实现自动重定向的基础。

2. 检查Apache的别名与WSGI配置

因为你用了项目别名myProject,Apache的配置必须确保不带尾斜杠的请求能正确传递给Django处理,而不是被Apache自己拦截或处理成静态目录。

正确的配置示例:

# Apache配置文件(比如/etc/apache2/sites-available/your-site.conf)
# 静态文件别名配置
Alias /myProject/static /path/to/your/myProject/static
<Directory /path/to/your/myProject/static>
    Require all granted
</Directory>

# WSGI脚本映射,这是关键!
WSGIScriptAlias /myProject /path/to/your/myProject/wsgi.py process-group=myProject application-group=%{GLOBAL}

<Directory /path/to/your/myProject>
    <Files wsgi.py>
        Require all granted
    </Files>
    # 禁止Apache自动处理目录斜杠,交给Django处理
    DirectorySlash Off
</Directory>

这里的重点是:

  • WSGIScriptAlias直接把/myProject映射到wsgi.py,确保所有/myProject开头的请求(不管带不带斜杠)都交给Django
  • 加上DirectorySlash Off,避免Apache自己对无斜杠的URL做重定向,抢了Django的活儿

3. 验证Django的URL配置

你的主urls.py需要能匹配到/myProject(不带斜杠)的请求,这样Django才会触发APPEND_SLASH的重定向逻辑。

假设你的WSGIScriptAlias是/myProject,那么Django的URLconf里的根路径就是对应/myProject的,所以主urls.py应该是这样的:

# urls.py
from django.urls import path, include
from . import views

urlpatterns = [
    # 空路径对应/myProject(不带斜杠)和/myProject/(带斜杠)
    path('', views.home, name='home'),
    # 其他应用的URL可以用include导入
    path('blog/', include('blog.urls')),
]

注意不要在URL里重复写myProject,因为WSGIScriptAlias已经帮你做了路径映射。

4. 最后一步:生效配置并测试

  • 重启Apache服务,让配置生效:
    sudo systemctl restart apache2  # 如果你用的是CentOS/RHEL,换成httpd
    
  • 清空浏览器缓存(或者用curl测试,避免缓存干扰):
    curl -v http://example.com/myProject
    
    如果看到返回301 Moved Permanently,并且Location指向http://example.com/myProject/,就说明成功了!

内容的提问来源于stack exchange,提问作者floatingpurr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:07:24