鹡鸰不重定向。当 DEBUG = False 时,500 错误而不是 404
Wagtail not redirecting. 500 error instead of 404 when DEBUG = False
那家伙 here 已经问过这个问题并通过删除 500.html
和 404.html
解决了这个问题。
我也一样,当 DEBUG
是 True
时,一切都按预期工作:Wagtail 将 /
重定向到 /en
,在不存在的页面上它给出 404 等等上。
现在当 DEBUG
是 False
时访问 /
它 returns 500 错误没有任何错误(只有 Internal Server Error: /
,我有 LOGGING
启用,日志文件也没有错误)。如果我删除 500.html
和 404.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 模板时,extends
、block
等。重定向不起作用,如果 404.html
是普通 html - 重定向工作...
在 github 上的 Wagtail 问题中有类似的问题 - #6587。我在 DEBUG = False
时有相同的行为 - Wagtail 在访问“恰好 URL” 时工作,重定向将不起作用。
删除 404 和 500 错误模板在生产中不是很好。有什么解决办法吗?
我建议调查到底是哪个模板标签导致 404.html 模板失败。我的猜测是,当您使用 {% extends %}
引入基本模板时,您的基本模板假设存在诸如 page
之类的变量,这些变量在生成 404 响应时不可用。
在 Wagtail 中,重定向由中间件处理,该中间件在正常页面服务处理 returns 404 时被激活。如果在生成 404 响应的过程中发生错误,则中间件不会将其识别为 404,因此不会发生重定向。
那家伙 here 已经问过这个问题并通过删除 500.html
和 404.html
解决了这个问题。
我也一样,当 DEBUG
是 True
时,一切都按预期工作:Wagtail 将 /
重定向到 /en
,在不存在的页面上它给出 404 等等上。
现在当 DEBUG
是 False
时访问 /
它 returns 500 错误没有任何错误(只有 Internal Server Error: /
,我有 LOGGING
启用,日志文件也没有错误)。如果我删除 500.html
和 404.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 模板时,extends
、block
等。重定向不起作用,如果 404.html
是普通 html - 重定向工作...
在 github 上的 Wagtail 问题中有类似的问题 - #6587。我在 DEBUG = False
时有相同的行为 - Wagtail 在访问“恰好 URL” 时工作,重定向将不起作用。
删除 404 和 500 错误模板在生产中不是很好。有什么解决办法吗?
我建议调查到底是哪个模板标签导致 404.html 模板失败。我的猜测是,当您使用 {% extends %}
引入基本模板时,您的基本模板假设存在诸如 page
之类的变量,这些变量在生成 404 响应时不可用。
在 Wagtail 中,重定向由中间件处理,该中间件在正常页面服务处理 returns 404 时被激活。如果在生成 404 响应的过程中发生错误,则中间件不会将其识别为 404,因此不会发生重定向。