重定向不需要的GET参数

时间:2015-04-12 19:50:24

标签: .htaccess mod-rewrite url-rewriting query-string query-parameters

搜索机器人正在使用许多奇怪的GET参数扫描我网站上的网页。例如?x??728%10%02?%18%9B%D9%DF%05等。我不知道机器人在哪里找到了网址,但它让我的cpu吸烟,因为缓存系统没有处理网址与GET参数。

我没有能力修改缓存系统,但是我希望将带有GET参数的请求重定向到同一个网址而不通过.htaccess获取GET参数。但是我有一些重要的GET参数,它们不会被重定向。它是?s=...用于网站搜索和utm标签。

总之,我想重定向以下网址

/some-url?x?
/some-url?728%10%02
/some-url?%18%9B%D9%DF%05

以及很多其他人参加

/some-url

但保持这样的未触动的网址:

/some-url?s=searh_term or
/some-url?utm_campaign=my_campaign

1 个答案:

答案 0 :(得分:1)

如果您有一定数量的GET参数,那么您可以在htaccess文件中检查它们,并在没有允许参数的情况下重定向所有请求。

RewriteEngine On
# check that there is indeed a query string
RewriteCond %{QUERY_STRING} ^.+$
# check that it doesn't start with one of allowed parameters
RewriteCond %{QUERY_STRING} !^(utm_campaign|s|other|parameters|list)= [NC]
RewriteRule ^(.*)$ /$1? [R=301,L]