OpenCart 2升4后.htaccess重定向问题:旧URL跳转新URL
OpenCart 2升4后URL重定向问题解决方法
问题原因
你当前的RewriteRule写法存在错误:目标路径里的(.*)是新的捕获组定义,而非引用前面匹配到的子路径内容,这会导致重定向后的URL里直接保留(.*)字符串,无法正确映射旧URL的子路径。
正确实现方法
针对merchandise目录的定向规则
把目标路径里的(.*)替换为$1($1代表第一个括号(.*)捕获到的所有子路径内容),正确规则如下:
RewriteRule ^merchandise/(.*)$ /en-gb/catalog/merchandise/$1 [R=301,NC,L]
批量处理所有旧URL(可选)
如果需要把所有未带/en-gb/catalog/前缀的旧分类、产品URL都重定向到新路径,可以用通用规则,但要先排除静态文件和已存在的目录,避免误定向:
# 排除真实存在的文件和目录,防止静态资源被错误重定向 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # 匹配所有非前缀开头的旧URL,重定向到带前缀的新路径 RewriteRule ^(.*)$ /en-gb/catalog/$1 [R=301,NC,L]
测试注意事项
- 先将
R=301改为R=302(临时重定向)测试,确认规则生效后再改回301(永久重定向),避免错误重定向被浏览器缓存。 - 修改
.htaccess后,务必清空浏览器缓存再测试,防止旧缓存干扰结果。
内容的提问来源于stack exchange,提问作者jimbeeer
相关产品推荐
相关产品推荐

