Apache.htaccess实现IP替换且保留URL其余部分的重定向配置
Apache 基于.htaccess实现旧IP转新IP的全路径保留重定向方案
前置必要检查
- 确认Apache已加载
mod_rewrite模块,可通过执行apache2ctl -M(Debian/Ubuntu系)或httpd -M(CentOS/RHEL系)命令查看已启用模块列表 - 确认站点对应目录的Apache配置中,
AllowOverride权限设置为All或至少包含FileInfo标识,否则.htaccess内的重写规则不会被服务器解析生效
核心配置
在站点根目录的.htaccess文件中写入如下规则:
RewriteEngine On # 匹配所有以旧IP为主机头的访问请求,不区分大小写 RewriteCond %{HTTP_HOST} ^127\.0\.0\.1$ [NC] # 301永久重定向到新服务器IP,完整保留原请求的全部路径和查询参数 RewriteRule ^(.*)$ http://192.196.1.1/$1 [R=301,L,QSA]
规则参数说明
[NC]:主机头匹配时忽略大小写,避免因为请求头格式差异导致规则失效[R=301]:返回301永久重定向状态码,可引导浏览器、搜索引擎自动更新旧IP对应的访问索引,长期降低旧IP的无效访问量[L]:匹配当前规则后立即终止后续规则的执行流程,避免其他重定向规则产生冲突QSA:自动将原URL中携带的查询参数(如?id=123&sort=time)拼接到新的跳转地址后,不会丢失请求附带的参数信息
实际跳转效果示例
- 原请求
http://127.0.0.1/files/image.png→ 跳转至http://192.196.1.1/files/image.png- 原请求
http://127.0.0.1/blog/post/123?page=2→ 跳转至http://192.196.1.1/blog/post/123?page=2- 原请求
http://127.0.0.1/api/user/info→ 跳转至http://192.196.1.1/api/user/info
注意事项
- 配置修改后无需重启Apache服务,.htaccess规则会实时加载,可直接通过浏览器访问旧IP下的测试路径验证跳转结果
- 后续如果需要将新IP替换为正式域名,仅需将规则中的
http://192.196.1.1/替换为目标域名即可,其余规则无需调整
内容的提问来源于stack exchange,提问作者Steve Bonsko
相关产品推荐
相关产品推荐

