【问题标题】:How to match hostname in .htaccess using regular expression?如何使用正则表达式匹配 .htaccess 中的主机名?
【发布时间】:2021-03-13 01:07:23
【问题描述】:

我正在尝试在我的 WordPress 网站中使用 .htaccess 来阻止机器人。

主机名是:ec2-D1-D2-D3-D4.us-east-2.compute.amazonaws.com

其中 D1、D2、D3、D4 是 1-3 位数字的序列,即。 [0-9]+ 将匹配。

在某些情况下,只存在 D1、D2 和 D3。

我正在尝试:

RewriteCond %{HTTP_REFERER} ^ec2-[0-9]+-[0-9]+-[0-9]+\.us\-east\-2\.compute\.amazonaws\.com$ [OR]
RewriteCond %{HTTP_REFERER} ^ec2\-[0-9]+\-[0-9]+\-[0-9]+\-[0-9]+\.us\-east\-2\.compute\.amazonaws\.com$ 

RewriteRule ^.*$ - [F,L]

它似乎不起作用。我错过了什么?

【问题讨论】:

  • 你把代码放在你的wordpress上面RewriteRules了吗?
  • @AmitVerma 是的。 .htaccess 中的第一行

标签: wordpress apache .htaccess mod-rewrite bots


【解决方案1】:

您能否尝试以下操作,公平警告尚未对其进行测试,还修复了您的正则表达式,并且HTTP_REFERER 不直接从热名称开始,因此在您的主机名之前也删除了^ 部分(所有值都是示例/仅提供有问题的测试值)。

RewriteEngine ON
RewriteCond %{HTTP_REFERER} ec2-([0-9]+-){1,}[0-9]+\.us-east-2\.compute\.amazonaws\.com [NC]
RewriteRule ^ - [F,L]

【讨论】:

  • 不工作。感谢您压缩正则表达式。
  • @Mulli,我从文档中看到的任何示例都应该可以,您的推荐人应该从 http 或 https 开始,清除缓存并尝试一次怎么样。
  • 我更喜欢:RewriteCond %{HTTP_REFERER} ec2(-[0-9]+){3,4}\.us-east-2\.compute\.amazonaws\.com [NC]
  • @Mulli,当然,谢谢分享,如果这对你有用,那为什么不呢:) 虽然我是按照所示示例编写的,但你比我们更了解你的示例 :)
  • 或者也可以在ec2条件之前添加^http[s]?://(?:www\.)(如果它适用于wordpress的引荐来源价值)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-24
  • 1970-01-01
  • 1970-01-01
  • 2010-09-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多