【问题标题】:How to block certain HTTP request with mod_rewrite?如何使用 mod_rewrite 阻止某些 HTTP 请求?
【发布时间】:2019-05-21 18:06:58
【问题描述】:

创建的 RewriteCond 正则表达式不会捕获日志摘录,尽管它已经过测试。因此请求不会按预期被阻止。

我想阻止对以下 URL 的请求

RewriteCond 语句 regex 已针对 regex101.com 的日志摘录进行了测试,但在服务器上应用时似乎无法捕获该摘录。

首先我尝试了整个请求 URL,但即使是(更短的)下面的 RewriteCond,也没有捕获到请求。我也试过了

应该被阻止的请求:

www.foobar.com/?eID=FOO&type=bar&search%5Bthis%5D%5Bthat%5D%5Btest%5D%5Blatitude%5D=11.1111111111111

1 重写规则 - 不捕获上述 URL:

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{REQUEST_URI} ^(\/)[?](eID=FOO)$ [NC]
  RewriteRule ^.*$ - [F,L]
</IfModule>

2 与此相同:

RewriteCond %{REQUEST_URI} ^(\/\?)(eID=FOO)$ [NC]

我预计请求会被阻止。但以上都不起作用。

非常感谢任何帮助。谢谢。

最好的问候,

马克

【问题讨论】:

    标签: linux apache mod-rewrite


    【解决方案1】:

    设置 REQUEST_URI 尝试下面提到的 QUERY_STRING 并确保 rewrite_module 已加载或启用

    <IfModule mod_rewrite.c> 
        RewriteEngine On 
        RewriteCond %{QUERY_STRING} ^.*(eID=FOO).* [NC]
        RewriteRule ^(.*)$ - [F,L] 
    </IfModule>
    

    LoadModule rewrite_module /opt/jboss/httpd/lib/httpd/modules/mod_rewrite.so

    【讨论】:

      猜你喜欢
      • 2021-06-08
      • 2022-06-28
      • 2019-08-01
      • 2010-09-21
      • 2019-10-18
      • 1970-01-01
      • 1970-01-01
      • 2020-12-25
      • 1970-01-01
      相关资源
      最近更新 更多