0

我正在将我的应用程序迁移到新主机。我现在面临着网址的问题。例如,当我访问 www.mydomain.be/public/dashboard 时,应用程序会重定向到 myservername.azurewebsites.net/public/dashboard。

一位同事向我指出“反向代理背后的 Laravel 路由”,但这对我不起作用。我用谷歌搜索并尝试了以下方法:

在 Middleware\TrustProxies.php

protected $proxies = [
        '**'
    ];

在 .env 中

PROXY_URL = http://www.mydomain.be/public/
PROXY_SCHEMA = https

在路线/web.phpp

    $proxy_url    = getenv('PROXY_URL');
$proxy_schema = getenv('PROXY_SCHEMA');
if (!empty($proxy_url)) {
    URL::forceRootUrl($proxy_url);
}

if (!empty($proxy_schema)) {
    URL::forceScheme($proxy_schema);
}

我也尝试在 routes/web.php 中使用

URL::forceRootUrl('https://www.mydomain.be/public');

但没有什么可以解决在 url-balk myservername.azurewebsites.net/public/ 中显示的事实。

4

2 回答 2

0

以下是使这项工作的快速解决方法,包括架构(http 与 https):

将以下代码放在 app/Http/routes.php 之上

$proxy_url    = getenv('PROXY_URL');
$proxy_schema = getenv('PROXY_SCHEMA');

if (!empty($proxy_url)) {
   URL::forceRootUrl($proxy_url);
}

if (!empty($proxy_schema)) {
   URL::forceSchema($proxy_schema);
}

然后将以下行添加到 .env 文件中:

PROXY_URL = http://igateway.somedomain.com

如果您还需要将生成的 HTML 代码中的架构从 http:// 更改为 https://,只需添加以下行:

PROXY_SCHEMA = https

在最新版本的 laravel forceSchema 方法名称已更改为 forceScheme ,上面的代码应如下所示:

if (!empty($proxy_schema)) {
    URL::forceScheme($proxy_schema);
}

我希望它会帮助你。 资源

于 2019-03-20T13:14:31.537 回答
0

在这里使用 laravel URL 外观和forceRootUrl方法(在 laravel 7.1 上工作)

将此行添加到AppServiceProvider使用boot方法中

URL::forceRootUrl('http://localhost/proxy/');
于 2020-07-04T06:34:55.317 回答