php - Wordpress 插件:反向代理静态文件
问题描述
我正在创建一个 wordpress 插件。如何使插件反向代理成为 javascript 文件?例如,HTML 文件将加载一个脚本标签:<script src="/script.js"></script>
. /script.js
Web 服务器的文件系统中不存在,我想从中获取它https://othersite.com/script.js
并将其返回给客户端。
原因:
- 我无法手动修改网络服务器配置(.htaccess 或 nginx.conf)。但是,使用 PHP 以编程方式修改配置很好。
- 我无法执行 HTTP 重定向 (30x)。
这是我到目前为止所拥有的:
<?php
function reverse_proxy_file() {
if ($_SERVER["REQUEST_URI"] === '/script.js') {
$response = wp_remote_get( 'https://othersite.com/script.js' );
foreach($response['headers'] as $i => $item) {
header("{$i}: {$item}");
}
http_response_code($response['response']['code']);
echo $response['body'];
die;
}
}
add_action('init', 'reverse_proxy_file');
?>
问题是/script.js
从未出现在钩子中的请求,未达到 if 语句主体。该请求收到 404 响应。
编辑:我用https://localbyflywheel.com/安装了 wordpress ,它默认使用 nginx。我认为 nginx 吞下了静态资产请求,因为该请求从未发送到 PHP。例如,请求/script.js
导致 nginx 404 页面,而请求/script
导致 wordpress 404 页面。
因为我的插件无法强制使用 Apache,所以我决定将脚本 src 更改为/script
,以便请求绕过网络服务器并到达 PHP,然后我可以提供我想要的任何内容。
解决方案
推荐阅读
- javascript - 应用方法未在 javascript 中返回完整的数组值
- php - 在 null 上调用成员函数 close()
- angular - 如何使用Angular 7在输入字段中设置值
- python - Zapier 编写的代码:Python - 如何使其返回错误
- javascript - const 是否像 let 一样创建本地范围?
- javascript - 如何将选定的复选框行传递给函数
- json - 如何处理 Haskell 中 JSON 对象的可变性?
- java - 使用 Sikuli 和 Env.isLockOn(Key.NUM_LOCK) 单击图像不起作用
- javascript - 如何从带有参数的js文件调用javascript函数并从tsx文件返回数据?
- regex - 匹配特殊字符