Drupal 8 Перенаправления на внешние URL-адреса запрещены по умолчанию.

Я настраиваю веб-сайт с помощью Drupal, веб-сайт развертывается на рабочем сервере через конвейеры битбакета. Обычно, когда я просматриваю myurl.com/user, он перенаправляет меня на myurl.com/user/login, однако теперь я получаю эту ошибку:

Redirects to external URLs are not allowed by default, use \Drupal\Core\Routing\TrustedRedirectResponse for it.

Я уже настроил «trusted_host_paterns», однако это, похоже, не решает проблему. шаблоны доверенных хостов:

$settings['trusted_host_patterns'] = array(
'^myurl\.com$',

);


person Community    schedule 09.03.2018    source источник
comment
Может быть, вы хотите показать свой trusted_host_paterns, чтобы добавить здесь больше контекста.   -  person George    schedule 09.03.2018


Ответы (3)


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

Чтобы это исправить, вам нужно вручную изменить следующее значение в базе данных. Перейдите в dr_config и найдите language.negotiation.

В загадочном блобе найдите что-то вроде

 {s:6:"source";s:6:"domain";

и измените его на

 {s:6:"source";s:6:"path_prefix";

после этого очистите все таблицы cache_* (для принудительной повторной обработки конфигурации), и есть большая вероятность, что тогда это может сработать.

person Andreas    schedule 24.10.2018
comment
Приятель, ты буквально спас меня от часов боли! Ваше здоровье - person Joe Keene; 28.02.2019
comment
Большой! Мне пришлось удалить приемную часть некоторых URL-адресов после миграции, и это мне очень помогло. (кстати: s:6 — это длина следующей строки: php.net /manual/ru/function.serialize.php) - person wessel; 13.11.2019

Схема мне кажется нормальная. Однако есть то, что я бы проверил:

  • Подтвердите с помощью браузера, что перенаправление на /user/login происходит ровно на myurl.com домене. Не www.myurl.com например.
  • Попробуйте также очистить кеш.
  • Затем просмотрите этот пост в DO
  • А затем этот. Это проблема D8 еще не исправлена.

Я помню, что у меня была аналогичная проблема на одном из моих веб-сайтов во время разработки в локальной среде, и проблема была действительно в шаблоне.

person George    schedule 09.03.2018

Если у вас это происходит из-за того, что многоязычный сайт не находит домены на локальном хосте, введите settings.php:

$config['language.negotiation']['url']['domains']['en'] = 'my-en-url.localhost';
$config['language.negotiation']['url']['domains']['de'] = 'my-de-url.localhost';
$config['language.negotiation']['url']['domains']['es'] = 'my-es-url.localhost';
$config['language.negotiation']['url']['domains']['fr'] = 'my-fr-url.localhost';
person Hans Rossel    schedule 19.04.2019