.htaccess and Apache ModSecurity


.htaccess and Apache ModSecurity

我有这个.htaccess

选项 -索引    重写引擎打开    重写库/   # 强制排除尾部斜杠    RewriteCond %{REQUEST_FILENAME} !-d    RewriteCond %{REQUEST_URI} (.*)/$    重写规则 ^(.+)/$ $1 [R=307,L]    # 限制 php 文件直接访问    # 这部分产生问题    RewriteCond %{THE_REQUEST} ^.+?'' [^?]+''.php[?'' ]    重写规则 ''.php$ - [F]    # 允许直接显示存在的任何文件或目录    RewriteCond %{REQUEST_FILENAME} !-f    RewriteCond %{REQUEST_FILENAME} !-d    RewriteRule ^(.*)$ index.php?$1 [QSA,L]

但是阿帕奇给我写了这个:

ModSecurity:警告。需要将"在 %{tx.allowed_methods} 内"与"REQUEST_METHOD"匹配。[文件 "/modsecurity/modsecurity_crs_30_http_policy.conf"]["31行"][ID "960032"][修订版"2"][消息"策略不允许使用方法"][数据"获取"][严重性"严重"][版本 "OWASP_CRS/2.2.9"][到期日"9"][精度"9"][标签 "OWASP_CRS/政策/METHOD_NOT_ALLOWED"][标签 "WASCTC/WASC-15"][标签 "OWASP_TOP_10/A6"][标签 "OWASP_AppSensor/RE1"][标签"PCI/12.1"]

我必须如何编辑我的htaccess?谢谢大家。

正如第一条评论所说,您有一个 ModSecurity 规则阻止了您的请求。如果您的托管服务提供商在构建 ModSecurity 时启用了"--enable-htaccess-config",那么您可以从 htaccess 文件中禁用该特定规则。您可以使用类似于以下内容的内容:

<IfModule mod_security.c> SecRuleRemoveById 960032 </IfModule>

但是,如果您的提供商尚未启用此功能,并且您无权访问任何 Apache 配置文件(httpd.conf 等)。然后,您必须联系您的托管服务提供商以解决此问题。不好意思