Drupal 8默认情况下不允许重定向到外部URL

问题描述 投票:0回答:3

我正在使用Drupal建立一个网站,该网站通过bitbucket管道部署在实时服务器上。通常,当我浏览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$',

);

drupal drupal-8 bitbucket-pipelines
3个回答
1
投票

以防其他人来到这里:您也可以将多语言站点迁移到不同的服务器/本地主机,并且在您的数据库中仍然是旧的重定向域,现在将不再起作用。

要解决此问题,您需要手动更改数据库中的以下值。转到dr_config并搜索language.negotiation

在隐秘的blob中,搜索有类似的东西

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

并将其更改为

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

之后清空所有cache_ *表(强制重新处理配置),那么它很可能会工作。


0
投票

这种模式对我来说似乎没问题。但是有我要检查的内容:

  • 使用您的浏览器确认重定向到/user/login恰好发生在myurl.com域。例如,不是www.myurl.com
  • 尝试清除缓存。
  • 然后在DO上查看this post
  • 然后this one。这是一个尚未修复的D8问题。

我记得在本地环境的开发过程中,我的一个网站上有类似的问题,问题确实存在。


0
投票

如果你有这个,因为多语言网站没有在localhost上找到域,请输入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';
© www.soinside.com 2019 - 2024. All rights reserved.