regex - htaccess 301 重定向 - 删除查询字符串 (QSA)

标签 regex apache .htaccess mod-rewrite url-rewriting

我一直在努力处理一些 htaccess 重定向。我只是花了一些时间在堆栈上阅读和搜索,但无法获得适合我的场景的答案。

我正在将旧客户端网站的 301 重定向到新网站。旧页面有参数查询,我想从 URL 中删除它。

/menu.php?idCategorie=29&idDetail=172

/新网站页面/

我有多个查询要做,这里有几个例子:

/menu.php?idCategorie=29&idDetail=172
/menu.php?idCategorie=29&idDetail=182
/menu.php?idCategorie=29&idDetail=184
/menu.php?idCategorie=29&idDetail=256

它们都链接到不同的新页面。

这是我尝试过的:

RewriteCond %{QUERY_STRING} idDetail=172
RewriteRule ^menu.php(.*) /new-page/? [R=301,L]

我正确重定向,但 URL 保留了查询字符串:

http://website.com/new-page/?idCategorie=29&idDetail=172

我也尝试过这个:

RewriteRule ^menu.php?idCategorie=29&idDetail=172$ http://website.com/new-page/? [L,R=301]

还有这个:

RewriteCond %{QUERY_STRING} idDetail=172(.*)$
RewriteRule ^menu.php /new-page-name?$1 [L,R=301]

它不起作用(最后仍然有查询字符串)

谢谢!

最佳答案

您可以使用此规则:

RewriteRule ^menu\.php$ /new-page-name? [L,R=301]

记下末尾的尾随 ?,它用于剥离原始 URI 中的任何现有查询字符串

关于regex - htaccess 301 重定向 - 删除查询字符串 (QSA),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21118511/

相关文章:

java - JAVA中有没有类似XML Beans for 834文件的工具

apache - 如何注释掉 .htaccess 文件的整个部分?

php - 提交简单的 PHP 表单时出现禁止错误

regex - 如何匹配.htaccess中的问号

regex - 数组中的ElasticSearch Regexp

regex - 在 Vim 中匹配单引号或双引号字符串

django - mod_python 错误 : ImportError: Could not import settings

javascript - 正则表达式的替代方案 $1 进行替换

java - 如何在 Java 或 Clojure 中用正则表达式替换字符串

apache - .htaccess 重写规则忽略字符串,url 中的多个 GET 变量