Opencart 1.5.3.1旧站页面301重定向至新域名问题求助
解决OpenCart 1.5.3.1中带查询参数的页面301重定向问题
你之前用Redirect指令无效的原因是:mod_alias模块的Redirect指令只匹配URL的路径部分(比如/index.php),不会识别?后面的查询字符串,所以带参数的请求根本触发不了这条规则。
要实现带查询参数的精准重定向,需要用mod_rewrite模块的规则,并且要把重定向规则放在现有OpenCart路由规则的前面(规则按顺序执行,先处理重定向再走路由)。
修改后的完整.htaccess示例
RewriteEngine On RewriteBase / # 单个产品页面重定向(按你的需求修改参数和目标地址) RewriteCond %{QUERY_STRING} ^route=product/product&path=2_8&product_id=135$ RewriteRule ^index\.php$ https://newdomain.com/new_page/? [R=301,L] # 如需多个重定向,复制以下块修改参数即可 RewriteCond %{QUERY_STRING} ^route=product/product&path=2_8&product_id=136$ RewriteRule ^index\.php$ https://newdomain.com/new_page_136/? [R=301,L] # 原有的OpenCart路由规则 RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L] RewriteRule ^googlebase.xml$ index.php?route=feed/google_base [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css) RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
规则说明
RewriteCond %{QUERY_STRING}:精准匹配完整的查询参数,确保只有符合route=product/product&path=2_8&product_id=NNN格式的请求才会触发重定向RewriteRule ^index\.php$:匹配路径为/index.php的请求- 目标URL末尾的
?:用来清除原请求的查询字符串,避免重定向后的URL带上旧参数 R=301:标记为永久重定向,利于SEO;L:表示执行完这条规则后不再往下处理其他规则
注意事项
- 测试前清空浏览器缓存或用隐私窗口访问,避免旧的301缓存影响测试结果
- 每一条重定向都需要单独的
RewriteCond+RewriteRule组合,对应你的5-10个页面
内容的提问来源于stack exchange,提问作者megamosk
相关产品推荐
相关产品推荐

