@fedor-sg
Инженер-программист

Как в Drupal 8 заменить Base URL и Request URI в зависимости от $_SERVER['SERVER_ADDR']?

Подскажите, пожалуйста, как настроить конфигурацию Drupal 8 под TLS-шлюз.

Есть обычный адрес сайта:

https://site.ru/

Для этого же сайта есть защищенный TLS-шлюз, который пробрасывает обычный адрес сайта по новому адресу:

https://tls.site.ru/subdirectory/

Сайт начал открываться по новому адресу, но с неправильными ссылками на веб-ресурсы.

Например, в пользовательских формах action ведет по старому адресу (как в админ. панели так и в формах на клиентской части). Пример:

<form action="/node/1?destination=/node/1" ...

Нужно сделать так, чтобы в значении атрибута action было значение "/subdirectory/node/1?destination=/node/1", аналогично, в ссылках на css-стили и js-скрипты в начало пути добавлялось "/subdirectory".

Для Drupal 7 у меня в /var/www/html/sites/default/settings.php эта проблема решалась так:

$base_url = 'https://site.ru';  // NO trailing slash!

// URL TLS
$url_tls = 'tls.site.ru';

// URL TLS Path
$url_tls_path = '/subdirectory';

// URL TLS Gateway
$url_tls_gateway = 'https://' . $url_tls . $url_tls_path;

// Вход осуществляется по защищенному каналу или нет
$is_tls_gateway = FALSE;

// IP-адрес сервера, на котором выполняется текущий скрипт
$server_addr = $_SERVER['SERVER_ADDR'];

// IP-адрес интерфейса TLS
$ip_tls = '10.10.100.1';

if ($server_addr === $ip_tls) {

    // Заменить Base URL
    $base_url = $url_tls_gateway;

    // Заменить Request URI
    $_SERVER['REQUEST_URI'] = $url_tls_path . $_SERVER['REQUEST_URI']; // не работает в Drupal 8

    // TLS используется
    $is_tls_gateway = TRUE;
}

// Используется ли TLS Gateway
define('IS_TLS_GATEWAY', $is_tls_gateway);

В Drupal 8 таким способом переприсвоить $_SERVER['REQUEST_URI'] не удается.

Подскажите, пожалуйста, как в Drupal 8 решается этот вопрос?
  • Вопрос задан
  • 36 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы