旧域名重定向至新域名但排除指定HTML文件的htaccess配置问题
旧域名重定向新域名并排除指定文件的解决方案
刚好我之前处理过类似的重定向需求,给你一个精准的配置,直接就能用在Apache的.htaccess或者服务器配置文件里:
<IfModule mod_rewrite.c> RewriteEngine On # 匹配根目录下的a.html,跳过后续重定向规则 RewriteRule ^a\.html$ - [L] # 仅针对old.com域名的请求进行重定向 RewriteCond %{HTTP_HOST} ^old\.com$ [NC] # 将旧域名下的所有路径重定向到新域名对应路径,永久重定向 RewriteRule ^(.*)$ https://new.com/$1 [R=301,L] </IfModule>
规则细节解释:
RewriteEngine On:开启Apache的URL重写引擎,这是所有重写规则生效的前提。RewriteRule ^a\.html$ - [L]:^a\.html$是精准匹配规则,确保只有根目录下的a.html会被匹配(如果是子目录里的a.html,比如/sub/a.html,这条规则不会生效);-表示不对这个请求做任何重写操作;[L]标记代表“Last”,意思是匹配到这条规则后,直接停止后续所有重写规则的执行,这样a.html就不会被后面的重定向规则处理了。
RewriteCond %{HTTP_HOST} ^old\.com$ [NC]:- 这条是重写条件,判断当前请求的域名是否是
old.com; [NC]是“No Case”的缩写,意思是不区分大小写,所以Old.com、OLD.COM这类请求也会被匹配到。
- 这条是重写条件,判断当前请求的域名是否是
RewriteRule ^(.*)$ https://new.com/$1 [R=301,L]:^(.*)$会捕获old.com后面的所有路径内容(比如/b.php、/c.xml);https://new.com/$1会把捕获到的路径拼接到新域名后面,实现对应路径的重定向;R=301表示这是永久重定向,对搜索引擎SEO友好,如果只是测试阶段,可以改成R=302临时重定向;[L]同样表示执行完这条规则后停止后续处理。
注意事项:
- 确保你的Apache服务器已经启用了
mod_rewrite模块,如果没启用,需要先在服务器配置里开启它; - 如果是用
.htaccess文件配置,要确保服务器允许.htaccess生效(配置里的AllowOverride All); - 测试的时候可以用浏览器的开发者工具查看网络请求,确认重定向状态码和目标地址是否正确。
内容的提问来源于stack exchange,提问作者Nawin
相关产品推荐
相关产品推荐

