htaccess 从 url 中删除参数

Posted

技术标签:

【中文标题】htaccess 从 url 中删除参数【英文标题】:htaccess remove the parameter from url 【发布时间】:2016-10-09 21:55:47 【问题描述】:

我正在尝试从 url 中删除某些 url 参数。这些参数不再对显示的内容产生影响,但谷歌已经将其中的一堆编入索引。

我想将它们重定向到基本网址。 以下是示例。

来自www.myexamplesite.com/?start=10 收件人:www.myexamplesite.com

来自www.myexamplesite.com/folder1/?start=10 收件人:www.myexamplesite.com/folder1

来自www.myexamplesite.com/folder2/?start=10 收件人:www.myexamplesite.com/folder2

实际上我不需要任何带参数的 url,所以我想知道是否有办法从 url 中捕获和重定向所有其他可能的参数,并且只允许我将在 htaccess 中指定的一些选定参数.

示例: 来自www.myexamplesite.com/?param1=10 收件人:www.myexamplesite.com

来自www.myexamplesite.com/?param1=10&param2=20 收件人:www.myexamplesite.com

来自www.myexamplesite.com/folder1/?param1=10 收件人:www.myexamplesite.com/folder1

来自www.myexamplesite.com/folder1/?param1=10&param2=20 收件人:www.myexamplesite.com/folder1

但是对于应该是我选择的 param3:

来自www.myexamplesite.com/folder1/?param3=10 保持不变:www.myexamplesite.com/folder1/?param3=10

更新 我实际上已经实现了一个解决方案,但我的主要问题是它总是重定向到主页而不是适当的 REQUEST_URI ...

这是我所拥有的:

RewriteCond %QUERY_STRING .
RewriteCond %QUERY_STRING !^item= 
RewriteCond %REQUEST_URI !^/manage
RewriteRule .? http://www.myexamplesite.com%REQUEST_URI? [R=301,L] 

【问题讨论】:

【参考方案1】:

您可以使用此规则去除所有查询字符串,除非在其中找到 param3=

RewriteEngine On

RewriteCond %QUERY_STRING .
RewriteCond %QUERY_STRING !(?:^|&)param3= [NC]
RewriteRule ^ %REQUEST_URI? [R=301,L,NE]

【讨论】:

以上是关于htaccess 从 url 中删除参数的主要内容,如果未能解决你的问题,请参考以下文章

htaccess:从缺少值的查询字符串中删除 URL 参数?

带有查询字符串的 URL 重定向 - htaccess

.htaccess 删除 index.php 并从 URL 中隐藏参数键

在 XAMPP 中使用 .htaccess local 重写 URL

.htaccess 从 URL + 目录中删除 WWW

使用 htaccess 从 URL 中删除 .php