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

如何在Python Django-Nginx服务器将已索引失效URL重定向至新URL?

解决AWS Nginx服务器上Django项目旧URL重定向问题

针对你遇到的旧URL访问404问题,推荐两种高效的解决方式——robots.txt仅用于告知爬虫爬取规则,无法处理重定向,所以之前的操作无效是正常的:

方法一:通过Nginx配置直接处理(推荐,性能更高)

Nginx直接拦截旧URL并返回重定向,无需经过Django,适合单个或少量重定向场景:

  1. 找到你的Nginx站点配置文件,通常位于/etc/nginx/sites-available/或/etc/nginx/conf.d/目录下(比如文件名为example.conf)
  2. 在server块内添加301永久重定向规则(301会告知搜索引擎更新索引,优先使用):
    server {
        # 保留原有配置(如listen、server_name、location等)
    
        # 单个旧URL重定向到新URL
        rewrite ^/logistics-services-odisha$ /logistics-services-in-odisha permanent;
    
        # 若有多个旧URL,依次添加即可
        # rewrite ^/old-page-1$ /new-page-1 permanent;
        # rewrite ^/old-page-2$ /new-page-2 permanent;
    }
    
  3. 验证配置语法:sudo nginx -t,输出test is successful后重启Nginx:sudo systemctl restart nginx

方法二:在Django项目中处理重定向

适合需要和Django路由逻辑结合,或大量重定向的场景:

  1. 打开项目主urls.py(或对应APP的urls.py),导入必要模块:
    from django.urls import path
    from django.shortcuts import redirect
    
  2. 在urlpatterns列表中添加旧URL的路由规则,直接返回重定向:
    urlpatterns = [
        # 保留原有路由配置
    
        # 旧URL重定向到新URL,permanent=True对应301永久重定向
        path('logistics-services-odisha/', lambda request: redirect('/logistics-services-in-odisha/', permanent=True)),
    
        # 多个重定向同理添加
        # path('old-page-1/', lambda request: redirect('/new-page-1/', permanent=True)),
    ]
    
  3. 重启Django应用服务(如gunicorn、uwsgi等),例如:sudo systemctl restart gunicorn

补充说明

  • 优先选择Nginx层面的重定向,减少Django请求处理开销
  • 301永久重定向会让谷歌等搜索引擎逐步更新索引,替换旧链接为新链接
  • 若有大量旧URL需要批量处理,可使用Nginx的map指令或Django自定义重定向中间件来简化配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 09:52:48