中的指令.htaccess
(在您的应用程序服务器上)似乎按预期工作。
但我一直收到那个文件上的请求。
阻止中的请求.htaccess
不会阻止请求到达服务器(并被记录)。正如您从日志条目中看到的,它是;“已阻止”;您的服务器正在响应403
禁止的HTTP响应状态(由于<Files>
/ deny from all
指令)。这个xmlrpc.php
未处理文件。
阻止请求到达应用程序服务器的唯一方法是实施某种防火墙或前端代理服务器,它基本上位于应用程序服务器的前面,并且;屏幕“;将所有请求传递到最终处理该请求的后端服务器之前。但既然你在;“共享托管”;平台,这可能不是您可以使用的。
我想我应该得到301而不是403
中的mod\\u authz\\u host(或Apache 2.4上的mod\\u access\\u compact)指令<Files>
容器将优先于mod\\u rewrite指令,尽管在.htaccess
文件,因此不会发生重定向。
删除<Files>
阻止并放置RewriteRule
位于.htaccess
文件,清除浏览器缓存,您应该会看到重定向。(请注意,301s由浏览器持久缓存,因此在清除浏览器缓存之前,后续的“测试”请求可能不会命中服务器。)
然而,最好用403阻止这些请求,而不是尝试发出301重定向。机器人程序无论如何都不太可能遵循重定向,因此这只是一个不成功(200)响应。mod\\u rewrite指令更容易意外重写,并且更依赖于中指令的顺序.htaccess
.
<Files xmlrpc.php>
order deny,allow
deny from all
</Files>
请注意
Order
和
Deny
指令是Apache 2.2,在Apache 2.4上已被正式弃用。如果您使用的是Apache 2.4,那么应该使用
Require all denied
相反
旁白:
RewriteRule ^xmlrpc\\.php$ "http\\:\\/\\/0\\.0\\.0\\.0\\/" [R=301,L]
The
RewriteRule
替换字符串(第二个参数)是一个;“普通”;字符串,不是正则表达式,所以冒号(
:
), 斜杠(
/
) 和点(
.
) 此处不需要反斜杠转义。(尽管即使是正则表达式,也只需要转义文字点,因为其他字符在这里没有特殊意义。这种不必要的转义是cPanel的典型特征。)