Django新手求助:访问pages/index.php出现404页面未找到错误
Django 404错误排查与解决
问题描述
访问https://mydomain/pages/index.php时触发404页面未找到错误,Django返回的URL匹配规则列表中无对应路径。
错误原因
- 现有URL配置未匹配
.php后缀路径:你的pages/urls.py仅配置空路径''对应首页视图,但访问路径是pages/index.php,Django的path规则为精确匹配,无法识别带.php后缀的请求路径。 - URL配置存在冗余(非当前404直接原因):
pages/urls.py中path('pages/streaming/', ...)会导致实际访问路径变为/pages/pages/streaming/,与预期的/pages/streaming/不符。
解决方案
方案1:添加匹配.php后缀的URL规则
在pages/urls.py中添加正则路径规则,匹配index.php:
from django.urls import path, re_path from . import views urlpatterns = [ # 保留原有所有规则... re_path(r'^index\.php$', views.index, name='index_php'), ]
配置后,访问/pages/index.php即可触发首页视图,解决404问题。
方案2:服务器端重写URL(推荐)
如果是旧链接或外部请求导致带.php后缀的访问,建议通过服务器配置重写规则,将/pages/index.php重定向到首页/,更符合Django的URL设计规范:
- Nginx配置示例:
server { # 其他配置... rewrite ^/pages/index.php$ / permanent; } - Apache配置示例:
RewriteEngine On RewriteRule ^pages/index.php$ / [R=301,L]
额外优化:修正冗余URL规则
pages/urls.py中的path('pages/streaming/', views.streaming, name='streaming')存在路径冗余,由于项目urls.py已将空路径指向pages.urls,实际访问路径会变成/pages/pages/streaming/,建议修改为:
path('streaming/', views.streaming, name='streaming'),
修改后访问/pages/streaming/即可正确匹配视图。
内容的提问来源于stack exchange,提问作者Bayo Izekor
相关产品推荐
相关产品推荐

