首页 > 解决方案 > Wordpress 插件:反向代理静态文件

问题描述

我正在创建一个 wordpress 插件。如何使插件反向代理成为 javascript 文件?例如,HTML 文件将加载一个脚本标签:<script src="/script.js"></script>. /script.jsWeb 服务器的文件系统中不存在,我想从中获取它https://othersite.com/script.js并将其返回给客户端。

原因:

这是我到目前为止所拥有的:

<?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,然后我可以提供我想要的任何内容。

标签: phpwordpress

解决方案


推荐阅读