regex - 用 mod_rewrite 匹配多个相同参数的实例
问题描述
我对重写规则有一些问题。我有一个网站接受作为参数的分页选项,作为任何位置的参数
index.php?page=2
index.php?other_parameter=other_value&page=2&another_paramenter=another_value
现在的问题是一些爬虫使用附加他们可以在页面上看到的所有参数,所以他们尝试
index.php?page=2&page=3&page=4
index.php?other_parameter=other_value&page=2&page=3&page=4&another_paramenter=another_value
我想阻止这些第二次尝试,所以基本上阻止查询参数中包含多个 page=NN 实例的任何调用,可能会将它们重定向到主页。
我正在使用https://technicalseo.com/tools/htaccess/来测试一些正则表达式来匹配这个,但我似乎无法找到一种方法来阻止具有多个 page= 参数的任何 url。
任何提示你会怎么做?
解决方案
您可以使用此规则来阻止此类查询字符串:
RewriteCond %{QUERY_STRING} (?:^|&)(page=)\d+(?=&(?:.*&)?\1) [NC]
RewriteRule ^ - [F]
page=<number>
如果后面跟着page=
查询字符串中任何位置的另一个实例,则此条件中的正则表达式模式匹配。如果匹配成功,则拒绝该请求(403)。
推荐阅读
- java - 在不同类中使用带有代码的按钮
- python - 需要 PYTHON JSONtoDICT 帮助 - 似乎 python 正在将我的 json-dictionary 转换解释为列表
- javascript - switch 语句不返回值
- python - Python Pandas-根据给定窗口计算某列的总和并从某个值开始
- c++ - fasb() 在这个函数上找不到任何东西
- javascript - 如何更改 Flask 中的 CORS 标头?
- c - 如何检查变量是否不是东西
- php - 合并两个带有参考 ID 的 XML 文件
- android - 自定义渲染器中的事件未触发
- go - 将 uint16 数组转换为字符串