我在设置从旧网站页面到新域的重定向时遇到问题。
Opencart版本1.5.3.1
我需要为 5-10 个类似格式的页面设置重定向。例如:
/index.php?route=product/product&path=2_8&product_id=NNN
如果有任何帮助,我将不胜感激。
我的
.htaccess
现在:
RewriteBase /
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]
以下类型的重定向规则不起作用:
Redirect 301 /index.php?route=product/product&path=2_8&product_id=135 https://newdomain.com/new_page/
我的
现在.htaccess
我假设您在文件顶部还有一个
RewriteEngine On
指令? (否则,你需要它!)
Redirect 301 /index.php?route=product/product&path=2_8&product_id=135 https://newdomain.com/new_page/
如评论中所述,
Redirect
(mod_alias)指令仅与 URL 路径匹配,因此上述指令(包括查询字符串)永远不会匹配。
由于您已经在使用 mod_rewrite,因此您也应该使用 mod_rewrite 进行此重定向,并且需要将其与
RewriteCond
指令结合起来才能匹配查询字符串。
例如,您的规则应如下所示,位于 .htaccess
文件的
top,位于现有指令之前:
RewriteCond %{QUERY_STRING} =route=product/product&path=2_8&product_id=135
RewriteRule ^index\.php$ https://newdomain.com/new_page/ [QSD,R=301,L]
请注意,前面的
CondPattern上的
=
前缀使其成为精确的字符串匹配,而不是正则表达式。
QSD
标志会丢弃重定向请求中的原始查询字符串。