Плагин Wordpress: обратный прокси-файл - PullRequest
0 голосов
/ 14 января 2020

Я создаю плагин для WordPress. Как сделать плагин обратным прокси-файлом javascript? Например, файл HTML загрузит тег сценария: <script src="/script.js"></script>. /script.js не существует в файловой системе веб-сервера, я хочу получить его из 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.

РЕДАКТИРОВАТЬ: я установил WordPress с https://localbyflywheel.com/, который использует nginx по умолчанию. Я думаю, что nginx проглотил запрос актива stati c, потому что запрос никогда не доходил до PHP. Например, запрос к /script.js привел к странице nginx 404, тогда как запрос к /script привел к странице WordPress 404.

Поскольку мой плагин не может принудительно использовать Apache, я решил изменить скрипт sr c на /script, чтобы запрос обходил веб-сервер и достигал PHP, тогда я мог бы обслуживать любой контент, какой захочу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...