Laravel在反向代理后面显示错误的URL路由

时间:2019-03-20 13:09:28

标签: php laravel laravel-5.8

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

一个同事将我指向“反向代理后面的Laravel路由”,但这对我不起作用。 我用Google搜索并尝试了以下操作:

在Middleware \ TrustProxies.php

protected $proxies = [
        '**'
    ];

.env

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

在routes / 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/的事实。

2 个答案:

答案 0 :(得分: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);
}

我希望它将对您有所帮助。  source

答案 1 :(得分:0)

在此处使用forceRootUrl方法使用laravel URL外观(适用于laravel 7.1)

将此行与AppServiceProvider method一起添加到boot

URL::forceRootUrl('http://localhost/proxy/');