使用htaccess重定向至新域名时保留路径的问题求助
解决域名重定向时路径无法传递的问题
先看你规则里的明显问题:所有exmaple都是拼写错误,应该改成example——这个拼写错误可能是核心原因,哪怕你觉得重定向成功了,也可能是缓存导致的错误跳转。
接下来按以下步骤排查解决:
- 修正拼写错误,把旧域名和目标域名里的
exmaple全部改成example,修正后的规则如下:RewriteEngine On RewriteCond %{HTTP_HOST} ^example.co.uk$ [NC,OR] RewriteCond %{HTTP_HOST} ^www.example.co.uk$ [NC] RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=302,NC] - 清除浏览器缓存,或者用隐私窗口测试:因为301是永久重定向,浏览器会缓存旧的重定向规则,哪怕你改了规则,浏览器还是会按缓存跳转,所以先改用302临时重定向测试,确认路径能传递后再改回301。
- 把这段规则放在
.htaccess文件的最顶部:如果文件里还有其他Rewrite规则,可能会提前匹配并拦截,导致你的重定向规则不生效。 - 尝试替换为
%{REQUEST_URI}写法:如果捕获组$1还是不生效,可以直接用服务器变量传递路径,规则改成:RewriteEngine On RewriteCond %{HTTP_HOST} ^example.co.uk$ [NC,OR] RewriteCond %{HTTP_HOST} ^www.example.co.uk$ [NC] RewriteRule ^ https://www.example.com%{REQUEST_URI} [L,R=302,NC] - 检查服务器配置:确保你的服务器启用了
mod_rewrite模块,并且虚拟主机配置里设置了AllowOverride All,否则.htaccess文件的规则根本不会被执行。
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

