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
相关产品推荐
相关产品推荐

