我刚刚运行了一个测试,将一个图像上载到媒体库,然后重命名了我的根索引。php文件来破坏Wordpress,但我上传的图像仍然可以通过其wp-content/uploads/...
URL。
没有。htaccess文件在wp内容中,也可以上传,这意味着,除非有任何插件可以拦截这些url,否则对这些文件的访问是直接的,而不是通过任何PHP。
所以,要想做你想做的事情,你需要添加一个。htaccess规则,该规则将拦截这些URL并将其传递给PHP脚本,如Wordpress的索引。php。例如,在你的根中有这样的东西。htaccess可以做到:
RewriteRule wp-content/uploads/(.*)$ index.php?uploadUrl=$1 [L,NC]
注意:这将添加到Wordpress块的上方,以便WP不会覆盖和删除它。
然后,在Wordpress处理这些URL之前,您必须捕获它们,然后才能执行您想要执行的任何操作,一个很好的地方就是template_redirect
hook, 在Wordpress开始计算如何呈现页面之前运行。
比如:
function hook_upload_url() {
if (!empty($_GET[\'uploadUrl\'])) {
// do your thing, path of this file is in $_GET[\'uploadUrl\']
// perhaps you want to serve a file, or wp_redirect(), then die()
}
}
add_action( \'template_redirect\', \'hook_upload_url\' );
这里的代码是如何实现您想要的但未经测试的目标的示例。如果您这样做,请回答任何问题。
笔记
这样做可能是一个非常糟糕的主意,因为它会导致对任何媒体的每次访问都会启动一个完整的WP实例,这在默认情况下是不会发生的。您有可能在服务器上增加大量负载
可能有另一种或更好的方法来获取URL查询参数WP样式,而不是直接使用$\\u get