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

Django框架下旧URL重定向到新URL且不丢失流量的最佳方案

Django URL重定向最优实现方案

要避免流量与SEO权重损失,需使用301永久重定向(而非默认的302临时重定向),让搜索引擎将旧URL的权重转移到新URL。推荐以下两种实现方案,可根据实际场景选择:

方案1:单条URL精准重定向(仅处理本次的terms-conditions规则,最简洁)

直接在urls.py中配置即可,无需修改视图代码:

from django.views.generic.base import RedirectView

urlpatterns = [
    # 重定向规则需放在原有URL规则的最前面,优先匹配
    path('pages/terms-conditions/', RedirectView.as_view(url='/terms-conditions/', permanent=True)),
    # 下方保留你原本的URL规则,比如新terms-conditions对应的路由、其他页面路由等
    # path('terms-conditions/', 你的视图函数名, name='terms_conditions'),
    # 其他原有规则...
]

参数说明:permanent=True即代表返回301永久重定向状态码,完全不会损失旧URL积累的流量和权重。

方案2:批量重定向所有/pages/前缀的旧URL

如果后续还有其他/pages/xxx格式的旧URL需要统一跳转到/xxx格式的新URL,可以写通用规则批量处理:

  1. 先在views.py中添加通用重定向视图:
from django.http import HttpResponsePermanentRedirect

def redirect_old_pages_url(request, path):
    # 自动去掉路径前缀/pages/,跳转到对应新路径
    return HttpResponsePermanentRedirect(f'/{path}')
  1. 在urls.py中配置通用路由:
from .views import redirect_old_pages_url

urlpatterns = [
    # 匹配所有/pages/开头的路径,优先放在规则最前面
    path('pages/<path:path>/', redirect_old_pages_url),
    # 下方保留你原本的所有URL规则
    # 其他原有规则...
]

本地验证方法

本地启动服务后,访问http://localhost:8000/pages/terms-conditions,确认可以正常跳转到新URL,同时通过浏览器开发者工具的「网络」面板查看请求状态码为301,即可上线使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 15:42:03