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

部署在cPanel的Django生产环境URL报404,本地正常求排查

Django部署cPanel后URL跳转404问题

我通过cPanel在虚拟主机上部署了Django应用,首页加载正常(仅开发者控制台显示favicon 404错误),图片和样式均正常显示(图片存储于Google Cloud Bucket,CSS/JS引用自CDN)。但点击菜单选项时,所有URL均无法正常访问,页面显示“File not found”,开发者控制台/网络面板显示404错误,日志文件中无任何错误信息。

已尝试的解决方案

  • 在settings中设置DEBUG=True、TEMPLATE_DEBUG=True
  • 逐个及组合指定默认Django模板加载器
  • 确认所有应用已添加至INSTALLED_APPS
  • 执行collectstatic并尝试将模板DIRS指向该静态文件夹
  • 每次修改后重启cPanel中的Python应用并清除浏览器缓存

补充说明:最初使用whitenoise处理静态文件,改用CDN方案后注释了settings中的相关配置,但仍出现404错误。模板最初放置在项目级目录(project\templates、project\templates\app),后来复制到应用级目录(application\templates\application*.html),collectstatic也在STATIC_ROOT生成了副本。

相关代码片段

base.html

<li><a href="{% url 'about' %}">About Us</a></li>

<li><a href="{% url 'programme:research' %}">Research</a></li>
<li><a href="{% url 'programme:training' %}">Training</a></li>

项目根urls.py(ROOT_URLCONF = 'myproject.urls')

app_name = 'myproject'

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', HomeView.as_view(), name='home'),
    path('about/', AboutView.as_view(), name='about'),
    path('programme/', include('programme.urls')),
]

programme应用urls.py

app_name = 'programme'

urlpatterns = [
    path('research', ResearchView.as_view(), name='research'),
    path('training', TrainingView.as_view(), name='training'),
]

people应用views.py

class HomeView(generic.TemplateView):
    template_name = "home.html"

    def get_context_data(self, **kwargs):
        ...
        return context

class AboutView(generic.TemplateView):
    template_name = "about.html"

programme应用views.py

class ResearchView(generic.TemplateView):
    template_name = "programme/research.html"

class TrainingView(generic.TemplateView):
    template_name = "programme/training.html"

settings.py

BASE_DIR = Path(__file__).resolve().parent.parent

INSTALLED_APPS += [
    'people',
    'programme',
]

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [
            os.path.join(BASE_DIR, 'templates'),
            # findMyWay("templates"),
        ],
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
            'loaders': [
                'django.template.loaders.filesystem.Loader',
                'django.template.loaders.app_directories.Loader',                
            ],
        },        
    },
]

LOGIN_REDIRECT_URL = 'home'

STATIC_URL = 'static/'

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'templates'),
    os.path.join(BASE_DIR, 'static'),
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 19:53:16