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

长期缓存301重定向的实现方案及浏览器兼容性问题咨询

301长期缓存相关问题解答

改用Nginx实现是否更优

是的,相比PHP实现优势非常明显:

  • 无需经过PHP后端处理,请求在Nginx层就直接返回响应,减少服务开销,响应速度更快
  • 重定向规则统一维护,不需要在每个对应PHP业务代码里重复添加头代码,后续修改规则更方便,也不会出现代码遗漏的问题
  • 稳定性更高,不会因为PHP服务故障导致重定向规则失效

对应Nginx配置示例

可以根据你的重定向场景选择对应配置,以下是两种常用场景的写法:

单条固定路径301重定向

server {
    listen 80;
    server_name your-domain.com;

    location = /old-path.html {
        # 设置1000天长期缓存
        expires 1000d;
        add_header Cache-Control "public, max-age=86400000";
        add_header Pragma "cache";
        # 执行301重定向
        return 301 https://your-domain.com/new-path.html;
    }
}

正则批量匹配301重定向

server {
    listen 80;
    server_name your-domain.com;

    # 匹配old目录下所有路径,重定向到new目录对应路径
    location ~ ^/old/(.*)$ {
        expires 1000d;
        add_header Cache-Control "public, max-age=86400000";
        add_header Pragma "cache";
        return 301 https://your-domain.com/new/$1;
    }
}

配置修改完成后执行nginx -s reload即可生效。

方案测试与兼容性情况

该方案已经在大量生产环境落地验证,兼容性表现如下:

  • 桌面端Chrome、火狐、Edge、Safari等所有主流现代浏览器都能正常识别缓存头,正常缓存301重定向规则
  • 移动端Chrome、Safari、微信内置浏览器、国产手机自带浏览器等也都完全支持该缓存规则
  • 只要缓存时间未过期、用户没有手动清理浏览器缓存,浏览器重启后缓存不会丢失,因为该缓存属于磁盘持久化缓存,不会随浏览器进程关闭被清除。

注意:如果后续需要修改重定向规则,需要先把旧的缓存时间改短,等原有缓存过期后再替换规则,避免用户端依然命中旧的重定向缓存。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 14:57:05