You need to enable JavaScript to run this app. 网站迁移时如何快速检测URL重定向并导出源与目标地址清单?
优惠活动
大模型
产品
解决方案
定价
更多

网站迁移时如何快速检测URL重定向并导出源与目标地址清单?

重定向清单获取可行方案

方案1:从Apache侧直接提取(优先选择,无需额外爬取)

1.1 日志提取法

  • 先确认Apache访问日志是否配置了%{Location}o(跳转目标响应头)和%>s(最终响应状态码)字段,若没有可临时修改httpd.conf配置新增自定义日志格式:
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Location}o\"" redirect_check_log
    CustomLog /var/log/apache2/redirect_check.log redirect_check_log
    
    配置生效后运行1-2天,覆盖绝大多数用户访问请求即可。
  • 用命令提取所有3xx重定向的源、目标地址并去重:
    grep " 30[1278] " /var/log/apache2/redirect_check.log | awk '{print $7, $NF}' | sort | uniq > redirect_list.txt
    
  • 注意:该方法仅能覆盖实际被触发过的重定向规则,从未被访问过的规则会遗漏。

1.2 静态配置扫描法

如果你的重定向规则都写在.htaccess或Apache配置文件中,可直接批量扫描提取规则:

# 扫描所有站点目录下的.htaccess文件
find /你的站点根目录路径 -name ".htaccess" | xargs grep -E "Redirect|RewriteRule" > htaccess_redirect_raw.txt
# 扫描Apache主配置、虚拟主机配置文件
grep -rE "Redirect|RewriteRule" /etc/apache2/sites-available/ >> htaccess_redirect_raw.txt

扫描完成后人工整理成源地址-目标地址的对应清单即可,该方法可以拿到所有静态配置的重定向规则,不会遗漏。

方案2:爬虫检测方案(覆盖全量路径,适配无配置权限、规则分散的场景)

前置准备

先拿到现有站点的全量URL清单,可从历史访问日志、站点地图sitemap、历史CMS后台导出数据中获取,没有清单的话可以先用轻量爬虫爬取全站所有可访问路径。

检测脚本示例

用Python requests实现批量检测,关闭自动重定向直接读取跳转目标:

import requests
# 自定义UA避免被反爬拦截
REQUEST_HEADERS = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
}

if __name__ == "__main__":
    # 读取全量URL清单,一行一个地址
    with open("all_site_urls.txt", "r", encoding="utf-8") as f:
        url_list = [item.strip() for item in f.readlines() if item.strip()]
    
    result = []
    for idx, source_url in enumerate(url_list):
        print(f"正在检测第{idx+1}/{len(url_list)}个地址:{source_url}")
        try:
            resp = requests.get(
                source_url, 
                headers=REQUEST_HEADERS, 
                allow_redirects=False, 
                timeout=15
            )
            if 300 <= resp.status_code < 400:
                target_url = resp.headers.get("Location", "无跳转目标")
                result.append(f"{source_url},{target_url},{resp.status_code}")
        except Exception as e:
            result.append(f"{source_url},检测失败,{str(e)}")
    
    # 导出为CSV格式清单
    with open("redirect_check_result.csv", "w", encoding="utf-8-sig") as f:
        f.write("源地址,目标地址,状态码/错误信息\n")
        f.write("\n".join(result))

该方案除了可以拿到完整的重定向映射关系外,还可以同时检测是否存在循环重定向、跳转死链等异常问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 12:06:04