Wagtail未重定向.当DEBUG=False时,500错误而不是404



这里的家伙已经问过这个问题,并通过删除500.html404.html解决了这个问题。

对我来说也是一样,当DEBUGTrue时,一切都如预期:Wagtail将/重定向到/en,在不存在的页面上,它给出404,依此类推

现在,当访问/时,DEBUGFalse时,它返回500错误,没有任何错误(只有Internal Server Error: /,我启用了LOGGING,日志文件也没有错误(。如果我删除500.html404.html,一切都正常,这很奇怪。。。

urls.py

urlpatterns = [
# path('django-admin/', admin.site.urls),
path('i18n/', include('django.conf.urls.i18n')),
path('admin/', include(wagtailadmin_urls)),
path('documents/', include(wagtaildocs_urls)),
path('search/', search_views.search, name='search'),
]

urlpatterns += i18n_patterns(
path("search/", search_views.search, name="search"),
path("", include(wagtail_urls)),
)

if settings.DEBUG:
from django.conf.urls.static import static
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
# Serve static and media files from development server
urlpatterns += staticfiles_urlpatterns()
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

MIDDLEWARE中有'wagtail.contrib.redirects.middleware.RedirectMiddleware',

此外,我注意到问题出现在404.html中,当使用django模板、extendsblock等时,重定向不起作用,如果404.html是纯html-重定向起作用。。。

在Wagtail关于github的问题中,也有类似的问题——#6587。当CCD_ 21-Wagtail工作时;恰好是那个URL";,重定向不起作用。

删除404和500错误模板在生产中并不好。有什么解决办法吗?

我建议调查到底是哪些模板标记导致404.html模板失败。我的猜测是,当您使用{% extends %}提取基本模板时,您的基本模板假设存在page等变量,而这些变量在生成404响应时不可用。

在Wagtail中,重定向由中间件处理,当正常的页面服务进程返回404时,中间件被激活。如果在生成404响应的过程中发生错误,那么中间件不会将其标识为404,因此不会发生重定向。

最新更新