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

如何修改Wagtail未发布页面的默认410状态码为301重定向或404?

当然可以调整Wagtail未发布页面的返回状态码!针对你的需求,我分别说说怎么改成301永久重定向或者404,再结合你提到的搜索引擎处理逻辑给点参考建议:

改成301永久重定向

如果你希望未发布页面直接跳转到其他页面(比如首页或者替代页面),可以在你的页面模型里重写serve方法,判断页面未发布时返回301响应:

from django.http import HttpResponsePermanentRedirect
from wagtail.models import Page

class CustomPage(Page):
    def serve(self, request, *args, **kwargs):
        # 检查页面是否处于发布状态
        if not self.live:
            # 这里替换成你需要重定向的目标URL
            return HttpResponsePermanentRedirect("/")
        # 已发布页面走默认逻辑
        return super().serve(request, *args, **kwargs)
改成404状态码

如果只是想让未发布页面返回“页面未找到”的404响应,同样可以通过重写页面模型的serve方法实现:

from django.http import Http404
from wagtail.models import Page

class CustomPage(Page):
    def serve(self, request, *args, **kwargs):
        if not self.live:
            raise Http404("Page not available")
        return super().serve(request, *args, **kwargs)

关于状态码选择的建议

正如你提到的,Google对不同状态码的处理逻辑差异很大:

  • 410 Gone:仅适合页面确定永久删除且不会恢复的场景,搜索引擎会快速移除该页面索引,且默认缓存响应,不再抓取;
  • 404 Not Found:适合页面暂时未发布(以后可能上线)的情况,搜索引擎会定期重试抓取该页面;
  • 301 Moved Permanently:适合页面永久迁移到新地址的场景,搜索引擎会把原页面的权重传递到目标页面,同时更新索引。

所以根据你的实际业务场景选择对应的状态码就好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 13:52:34