apache 302重定向是临时跳转,适用于测试、灰度发布或短期维护;需用redirect temp或rewriterule [r=302,l]配置,并注意allowoverride、变量名和规则顺序等细节。

Apache 302 重定向是临时跳转,适合测试、灰度发布或短期维护场景。配置关键在于明确标记 R=302 并终止规则链,避免误跳或循环。
用 Redirect 指令快速实现
最简单的方式,适用于路径级跳转,无需正则:
-
Redirect temp /old-page.html /new-page.html—— 同域名内跳转,浏览器地址栏变为/new-page.html -
Redirect temp /blog http://example.com/news—— 跨目录或跨域跳转,必须写完整目标 URL - 不加
temp默认就是 302;加permanent才是 301
用 RewriteRule 精确控制条件
需要结合用户代理、主机名、查询参数等判断时,必须用 mod_rewrite:
PHP中文网提供Apache 2.4.62 官方 tar.gz 源码包下载,通过源码编译安装,开发者能够灵活定制模块、优化性能并精准控制安装路径,满足多样化的业务需求。
- 先确保开启模块:
LoadModule rewrite_module modules/mod_rewrite.so - 在虚拟主机或 .htaccess 中启用:
RewriteEngine On - 匹配后跳转必须带标志:
[R=302,L]——R=302触发临时重定向,L防止后续规则干扰 - 示例:把所有访问
/admin的请求临时跳到维护页RewriteCond %{REQUEST_URI} ^/admin [NC]<br>RewriteRule ^(.*)$ /maintenance.html [R=302,L]
注意常见坑点
302 配置失效或跳错,往往卡在这几个细节上:
-
AllowOverride All必须在对应目录的主配置中打开(如<directory></directory>),否则 .htaccess 不生效 - 写错变量名,比如把
%{HTTP_HOST}写成%{HOST},Apache 不报错但条件永远不匹配 - 漏掉
[L]导致多条规则叠加,可能触发无限跳转或覆盖预期行为 - 调试阶段坚持用
R=302,上线确认无误后再改R=301;301 一旦被缓存,改错很难即时撤回
和 HTTPS 强制跳转共存时
如果同时做 HTTP→HTTPS 和其他 302 跳转,顺序很重要:
- 把 HTTPS 跳转放在最前面(因为它基于端口判断,最稳定):
RewriteCond %{SERVER_PORT} 80<br>RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=302,L] - 再写业务逻辑跳转,比如移动端识别、路径重定向等
- 所有跳转规则都应以
[R=302,L]结尾,避免规则链意外延续










