.htaccess 将一些 Opencart 页面重定向到新域

问题描述 投票:0回答:1

我在设置从旧网站页面到新域的重定向时遇到问题。

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/
apache .htaccess redirect opencart
1个回答
0
投票

我的

.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
标志会丢弃重定向请求中的原始查询字符串。

© www.soinside.com 2019 - 2024. All rights reserved.