Я создаю плагин для 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, тогда я мог бы обслуживать любой контент, какой захочу.