Magento旧站301跳转新站后,后台/admin访问异常的解决方案咨询
解决Magento1旧站/admin路径仍被重定向到新站的问题
看起来你的301重定向规则逻辑方向是对的,但还是出现了/admin路径被意外跳转的情况,大概率是规则的匹配范围不够全面,或者原Magento1的.htaccess规则干扰了执行顺序。咱们一步步来排查解决:
可能的问题根源
- 例外规则的匹配范围太窄:你当前的
!^/admin只匹配了精确等于/admin的路径,但实际访问后台时,路径可能是/admin/(带末尾斜杠)或者/admin/dashboard这类子路径,这些情况都不会被当前的例外规则命中,所以还是会触发301重定向。 - 原Magento1规则的优先级干扰:即使你的规则跳过了/admin的重定向,原Magento1的.htaccess里自带的内部重写规则(比如把/admin路径映射到index.php)如果在你的规则之后执行,可能会间接触发其他跳转逻辑。
- 浏览器缓存误导测试结果:301是永久重定向,浏览器会缓存旧的重定向规则,导致你修改后的规则看起来没生效。
具体解决方案步骤
1. 优化例外规则的匹配范围
把例外规则调整为覆盖所有以/admin开头的路径,包括子路径和带斜杠的情况。修改后的完整规则如下:
RewriteEngine on # 匹配旧站的两个域名 RewriteCond %{HTTP_HOST} ^oldsite\.co\.uk$ [OR] RewriteCond %{HTTP_HOST} ^www\.oldsite\.co\.uk$ # 例外:所有以/admin开头的路径(含/admin、/admin/、/admin/xxx等) RewriteCond %{REQUEST_URI} !^/admin(/.*)?$ # 执行301重定向到新站对应路径 RewriteRule ^(.*)$ https://www.newsite.co.uk/$1 [R=301,L]
这里的!^/admin(/.*)?$正则会精准匹配所有后台相关路径,避免遗漏子页面。
2. 确保规则的执行优先级
把上面的规则放在原Magento1所有Rewrite规则的最顶部,也就是在RewriteBase /和Magento自带的内部重写规则之前。Apache是按顺序执行Rewrite规则的,越早的规则优先级越高,这样能确保/admin的例外判断先于原Magento的内部重写逻辑执行。
3. 检查原Magento1的后台配置
如果还能临时访问旧站后台,建议检查:
- 系统配置里的Web -> 安全 -> 后台URL是否被自定义过(比如不是默认的/admin),如果是自定义路径,需要把例外规则里的
/admin替换成实际的后台路径。 - 原站点是否有第三方扩展或自定义代码对/admin路径做了额外的重定向处理。
4. 绕过浏览器缓存测试
测试时尽量用命令行工具(比如curl)来避免浏览器缓存的干扰:
curl -I https://oldsite.co.uk/admin
如果返回的状态码是200 OK,说明例外规则已经生效;如果还是301,再检查规则的顺序和正则表达式是否正确。
内容的提问来源于stack exchange,提问作者user9164158
相关产品推荐
相关产品推荐

