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

时间:2019-05-02 08:07:41

标签: php wordpress apache .htaccess xml-rpc

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

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

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

  

禁止
  您无权访问此服务器上的/xmlrpc.php。

但是,日志仍然显示(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日志中?

2 个答案:

答案 0 :(得分:4)

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

使用[F]标志会使服务器向客户端返回403 Forbidden状态代码。

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

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

有关更多信息:

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

答案 1 :(得分:2)

您可能会知道,因为我可以看到您超过19k的声誉:) xmlrpc在wp中默认为false,因此不建议打开global。 在.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