如何将404或500或403等错误重定向到apache httpd中的自定义错误页面?

时间:2018-02-06 05:28:56

标签: django apache .htaccess error-handling httpd.conf

我创建了一个Django项目,但我使用Apache作为网络服务器。任何人都可以告诉我如何将错误代码(如404或500或400)重定向到自定义错误html页面而不是在页面上收到标准错误消息以防发生错误?我已经尝试过在网上提供的解决方案但似乎没有工作

3 个答案:

答案 0 :(得分:1)

from django.conf.urls import (handler403, handler404, handler500)

handler403 = 'my_app.views.permission_denied'
handler404 = 'my_app.views.page_not_found'
handler500 = 'my_app.views.server_error'

你可以像这样处理这些请求。

答案 1 :(得分:1)

我有一个django支持的博客,项目的urls.py:

from django.conf.urls import handler400, handler403, handler404, handler500

urlpatterns = [
    url(r'^$', IndexView.as_view(), name='index'),
    url(r'^admin/', admin.site.urls),
    ....
    url(r'^rss/$', BlogFeed(), name='rss'),
    url(r'^sitemap\.xml$', sitemap, {'sitemaps': sitemaps}, name='sitemap')
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

if not settings.DEBUG:
    handler400 = 'common.views.bad_request'
    handler403 = 'common.views.permission_denied'
    handler404 = 'common.views.page_not_found'
    handler500 = 'common.views.server_error'

公共/ views.py:

def bad_request(request):
    context = {}
    return render(request, '400.html', context, status=400)


def permission_denied(request):
    context = {}
    return render(request, '403.html', context, status=403)

def page_not_found(request):
    context = {}
    return render(request, '404.html', context, status=404)


def server_error(request):
    context = {}
    return render(request, '500.html', context, status=500)

答案 2 :(得分:0)

视图中缺少的异常是针对此问题的解决方案。 更改:

def bad_request(request):

针对:

def bad_request(request, exception):