.htaccess 301 重定向不起作用

.htaccess 301 重定向不起作用

我有一个使用基于 PHP 的 CMS 系统的网站。

因此每个页面都是动态生成的,如下所示:

http://www.shuling.net.cn/index.php?_m=mod_product&_a=view&p_id=87

现在我想将此特定页面重定向到另一个页面,即:

因此我编写了 .htaccess 文件如下:

redirect 301 /index.php?_m=mod_product&_a=view&p_id=87 https://www.datanumen.com/sql-recovery/

但是当我将.htaccess上传到网站根目录后,这根本不起作用。

我通过编写另一条规则重新测试,如下所示:

redirect 301 /sql/ https://www.datanumen.com/sql-recovery/

那么这条规则就能完美发挥作用了。

为什么?

谢谢

答案1

查询字符串不是 Redirect 指令中匹配的一部分,要重定向查询字符串,您需要使用 mod-rewrite ,如下所示:

选项1

RewriteEngine on

RewriteCond %{THE_REQUEST} /index\.php\?_m=mod_product&_a=view&p_id=87 [NC]
RewriteRule ^ https://www.datanumen.com/sql-recovery/? [NC,L,R]

选项 2

RewriteEngine on

RewriteCond %{QUERY_STRING} ^_m=mod_product&_a=view&p_id=87$ [NC]
RewriteRule ^index\.php$ https://www.datanumen.com/sql-recovery/? [NC,L,R]

我们使用空问号在目标 url 末尾丢弃旧的查询字符串,否则这些查询字符串会默认附加到目标 url。

更改RR=301如果您想使重定向永久生效。

[在 apache2 和 2.4 上测试]

相关内容