htaccess从url中删除参数

时间:2016-06-09 09:58:25

标签: regex .htaccess redirect mod-rewrite

我正在尝试从网址中删除某些网址参数。这些参数对正在显示的内容没有任何影响,但谷歌有一堆索引。

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

来自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 个答案:

答案 0 :(得分:4)

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

RewriteEngine On

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