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

CPanel部署Django网站后全链接404问题求助

解决CPanel部署Django后404错误的方案

1. 修正URL路径匹配问题

你提到预期主页面跳转到example.com/shop,但当前代码里的路径是store,这直接导致/shop路径不存在,返回404。同时,Django的path建议结尾加斜杠(除非你明确不需要),避免重定向问题:

修改shop应用的urls.py:

from django.views.generic.base import RedirectView
from .views.home import Index, shop, about

urlpatterns = [
    # 访问根目录时自动重定向到shop页面
    path('', RedirectView.as_view(url='/shop/', permanent=True)),
    path('shop/', shop, name='store'),  # 改为shop路径,结尾加斜杠
    path('about-us/', about, name='about-us'),  # 补充结尾斜杠
]

2. 确认项目根URLconf包含应用路由

检查项目根目录的urls.py,确保已经挂载shop应用的URL配置,否则应用内的路由不会生效:

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('shop.urls')),  # 将shop的路由挂载到根路径下
]

3. 修复CPanel服务器重写规则

在CPanel部署Django时,必须配置.htaccess文件(Apache环境)处理URL重写,否则除静态文件外的动态路径都会返回404。在项目根目录(或public_html目录)创建/修改.htaccess:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /path/to/your/wsgi.py/$1 [L]

注意:将/path/to/your/wsgi.py替换为你实际的WSGI文件路径,比如项目在public_html/myproject下时,路径为/public_html/myproject/myproject/wsgi.py。同时重启CPanel中的Python应用。

4. 验证静态文件配置

运行python manage.py collectstatic收集静态文件到STATIC_ROOT目录,同时在项目settings.py中确认配置:

import os
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')  # 确保该目录已创建

在CPanel中需配置静态文件访问路径指向STATIC_ROOT,否则静态资源也会返回404。

5. 检查APPEND_SLASH设置

默认settings.py中APPEND_SLASH = True,若你手动关闭了该选项,需确保所有URL都带斜杠,否则会出现404。建议保持默认开启状态。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 14:10:39