在 apache 的 .htaccess 或虚拟主机配置中,使用 r=301 和 r=302 主要是为了区分永久重定向与临时重定向。通过给 rewriterule 添加相应的标志位,可以控制浏览器和搜索引擎对 url 变更的处理方式:301 告诉客户端该资源已永久移动,而 302 仅表示暂时跳转。
![Apache 中 RewriteRule 怎么使用 [R=301] 与 [R=302] 进行区分响应](https://img.php.cn/upload/article/001/242/473/179477734079576.png?x-oss-process=image/resize,p_40)
如何配置永久重定向(R=301)
要实施永久重定向,需在 RewriteRule 的末尾标志数组中添加 R=301。这通常用于网站结构迁移、域名更换或强制 HTTPS 化等场景,目的是让搜索引擎更新索引并缓存新的 URL 地址。
![Apache 中 RewriteRule 怎么使用 [R=301] 与 [R=302] 进行区分响应](https://img.php.cn/upload/article/001/242/473/179477734052618.png?x-oss-process=image/resize,p_40)
# 启用重写引擎 RewriteEngine On # 将旧页面永久重定向到新页面 RewriteRule ^old-page\.html$ /new-page.html [R=301,L]
上述配置中,当用户访问 old-page.html 时,服务器会返回状态码 301,并将请求指向 /new-page.html。L 标志表示这是最后一条规则,停止后续处理。这种设置会导致浏览器直接跳转到新地址,且不会再次请求旧地址。
如何配置临时重定向(R=302)
若需进行临时重定向,应使用 R=302 标志。这在 A/B 测试、维护期间页面替换或流量引导等场景中非常有用,它告知客户端该跳转是暂时的,搜索引擎应继续抓取原始 URL。
通过Apache Tika Server REST API从1400多种文件格式中提取文本和元数据。处理PDF、DOCX、PPTX、电子邮件归档以及带有MIME类型检测的嵌入式文档提取。
![Apache 中 RewriteRule 怎么使用 [R=301] 与 [R=302] 进行区分响应](https://img.php.cn/upload/article/001/242/473/179477734080827.png?x-oss-process=image/resize,p_40)
# 启用重写引擎 RewriteEngine On # 将首页临时重定向到维护页面 RewriteRule ^index\.html$ /maintenance.html [R=302,L]
在此示例中,访问 index.html 会触发 302 响应,浏览器显示 maintenance.html 的内容,但搜索引擎仍会将 index.html 视为主要收录对象。与 301 不同,302 不会改变搜索引擎对原 URL 权重的评估,适合短期流量调整。
基于 R=301 和 R=302 的具体行为差异是什么
在使用 R=301 和 R=302 时,最显著的区别在于浏览器的缓存行为和搜索引擎的索引更新策略。301 会被浏览器持久缓存,意味着后续对该旧 URL 的请求可能直接从本地缓存获取,不再向服务器发送请求;而 302 每次都会向服务器发起新请求,确保获取最新的临时内容。此外,搜索引擎在处理 301 时会把旧页面的权重传递给新页面,而在 302 情况下则保留在原 URL 上。因此,选择哪种标志取决于业务需求:长期变更用 301,短期调整用 302。










