Django实现旧路径重定向至子域名以保留SEO
Django博客路径迁移后的重定向方案及服务器配置选择
一、Django内部配置301永久重定向
保留旧URL路由规则,通过视图返回永久重定向响应,确保搜索引擎识别为永久地址变更:
- 在主域名项目的
urls.py中添加重定向逻辑:
from django.shortcuts import redirect from django.urls import path def blog_redirect(request, path): return redirect(f"https://blog.codewithbishal.com/{path}", permanent=True) urlpatterns = [ # 原有业务路由 # ... # 匹配所有旧博客路径 path('example/<path:path>', blog_redirect), ]
permanent=True是核心,它会发送301状态码,告知搜索引擎这是永久迁移,会将旧链接的权重转移至新链接。
二、Apache .htaccess配置重定向
若服务器使用Apache,可在主域名根目录的.htaccess文件中添加重写规则,在请求到达Django前完成跳转:
RewriteEngine On RewriteRule ^example/(.*)$ https://blog.codewithbishal.com/$1 [R=301,L]
R=301指定永久重定向,L表示执行完该规则后停止后续匹配,避免规则冲突。
三、两种方案的选择建议
- 优先选Django内部配置:如果后续需要针对特定路径调整重定向逻辑(比如部分旧路径无需跳转),或团队更熟悉Django开发流程,这种方式更灵活,无需修改服务器配置,维护成本低。
- 选Apache .htaccess:若希望减少Django的请求负载,或重定向逻辑为全局固定规则,服务器层面的重定向效率更高,请求无需进入Django应用即可完成跳转。
从SEO角度看,只要是标准的301永久重定向,两种方案效果完全一致,都能保留原有权重并引导搜索引擎将索引更新为新链接。
额外注意事项
- 必须使用301重定向,禁止使用302临时重定向,否则搜索引擎不会更新索引。
- 测试所有旧路径,确保跳转后对应正确的新内容,避免出现404或错误跳转。
- 可在谷歌搜索控制台提交新站点地图,加速搜索引擎对新链接的索引更新。
内容的提问来源于stack exchange,提问作者Code With Bishal
相关产品推荐
相关产品推荐

