拒绝 xmlrpc.php 文件但不记录失败的请求

Deny xmlrpc.php file but don't log the failed requests

我将此添加到 WordPress 网站的 .htaccess

<files xmlrpc.php>
order allow,deny
deny from all
</files>

有效,当有人尝试访问 http://example.com/xmlrpc.php 时,会显示此消息:

Forbidden
You don't have permission to access /xmlrpc.php on this server.

但是,日志仍然显示 (less /var/log/apache2/error.log):

[Thu May 02 10:02:03.316061 2019] [access_compat:error] [pid 19467] 
[client 1.2.3.4:49409] AH01797: client denied by server 
configuration: /path/to/xmlrpc.php

如何拒绝访问 xmlrpc.php(可能来自 .htaccess)但 防止它出现在 Apache 日志中?

RewriteRule ^(xmlrpc\.php) - [F,L,NC]

使用 [F] 标志会导致服务器 return 向客户端发送 403 禁止状态代码。

[L] 标志导致 mod_rewrite 停止处理规则集。

使用 [NC] 标志会导致以不区分大小写的方式匹配 RewriteRule。

更多信息:

https://httpd.apache.org/docs/2.4/rewrite/flags.html

你可能更清楚,因为我可以看到你超过 19k 的声誉:) xmlrpc 在 wp 中默认为 false,不建议打开全局。 你应该在.htaccessfunctions.php

中有这样的东西

add_filter('xmlrpc_enabled', '__return_false') rpc 已禁用。

如果不是?然后将它添加到您的 functions.php 它将解决您的问题。 如果没有解决那么使用插件

要拒绝所有人 最好使用像 manuel 这样的插件来做到这一点 Manage XML-RPC.

İ如果您只想为自己考虑。 检查你的 .htaccess 中是否没有 rpc false 并添加下面的代码以仅对你的 ip 启用。

<Files xmlrpc.php>
  order deny,allow
  deny from all
  allow from 10.123.456.000 //Replace with your ip
</Files>

或仅允许来自 GET,PROPFIND,POST,OPTIONS,PUT,HEAD[403]

RewriteCond %{REQUEST_METHOD} !^(GET|HEAD|POST|PROPFIND|OPTIONS|PUT)$ [NC]
RewriteRule .? - [F,NS,L]

如果您想允许 rpc,请转到此处并按照以下步骤操作: https://www.wikihow.com/Enable-XML-RPC-in-WordPress