
通过 apache 的 mod_rewrite 模块,可在不修改 html 代码的前提下,将所有对旧图片域名(如 img.example-domain.com)的 http 请求自动、透明地重定向至新的 aws 图片服务地址。
要在 Apache 中实现对整个旧图片域名(例如 img.example-domain.com)的统一重定向,最高效且无需改动前端代码的方式是利用服务器级 URL 重写——即通过 .htaccess 文件或虚拟主机配置启用 mod_rewrite 模块进行基于 Host 头的条件重定向。
以下是一个经过验证、安全可用的配置示例(适用于 .htaccess 文件):
RewriteEngine On # 匹配主域名及可能的 www 子域 RewriteCond %{HTTP_HOST} ^img\.example-domain\.com$ [OR] RewriteCond %{HTTP_HOST} ^www\.img\.example-domain\.com$ # 将全部路径重写到新 AWS 地址(注意:此处需替换为真实可用的 AWS 域名) RewriteRule ^(.*)$ https://img.example-domain.com.amazon.etc/$1 [R=302,L]
✅ 关键说明:
- RewriteCond 使用正则精确匹配 Host,避免误伤其他子域;点号 . 需转义为 \.;
- RewriteRule ^(.*)$ 捕获完整请求路径(含查询参数),确保 /avatar.png?size=large 等也能正确转发;
- [R=302,L] 表示临时重定向(推荐上线初期使用),便于测试与回滚;确认无误后可改为 [R=301,L] 实现永久重定向(浏览器和 CDN 将缓存该跳转);
- 强烈建议使用 https:// 协议前缀(而非原文中的 http://),以避免混合内容警告,尤其当主站启用 HTTPS 时;
- 新目标域名(如 img.example-domain.com.amazon.etc)必须已配置 DNS 解析并可通过公网访问,否则重定向将失败。
⚠️ 注意事项:
- 确保 Apache 已启用 mod_rewrite 模块(通常通过 a2enmod rewrite 启用,并重启服务);
- 若网站部署在共享主机环境,请确认服务商允许 .htaccess 覆盖 RewriteEngine;否则需将规则移至虚拟主机(VirtualHost)配置中;
- 此方案仅处理 入站 HTTP 请求的响应重定向,不改变 HTML 中原始 href 属性值——因此对 SEO 友好,且不影响页面初始加载逻辑;
- 若图片资源被嵌入
、CSS background-image 或 JS 动态加载中,只要其 URL 域名匹配条件,同样会被重定向。
? 进阶提示:
如需支持通配子域(如 *.img.example-domain.com),可将条件改为:
RewriteCond %{HTTP_HOST} \.img\.example-domain\.com$ [NC]并配合 ServerAlias 或泛解析 DNS 使用。
综上,该方案以最小侵入性解决了“代码未更新但服务已迁移”的典型运维场景,兼顾可维护性、安全性与兼容性,是静态资源域名迁移的标准实践之一。










