重定向不需要的 GET 参数

Redirect for unwanted GET params

一个搜索机器人正在扫描我网站上的页面,其中包含许多奇怪的 GET 参数。例如 ?x??728%10%02?%18%9B%D9%DF%05 等。我不知道机器人在哪里发现 urls 但它让我的 cpu 抽烟,因为缓存系统不处理 urls 与 GET 参数。

我无法修改缓存系统,但我想通过 .htaccess 将带有 GET 参数的请求重定向到相同的 url 而没有 GET 参数。但是我有一些重要的 GET 参数不应被重定向。 ?s=... 用于站点搜索和 utm 标签。

总而言之,我想重定向以下 urls

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

和很多其他人 GET 参数到

/some-url

但保持原样 url 是这样的:

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

如果您选择了可能的 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 ^(.*)$ /? [R=301,L]