我正在将应用程序迁移到新主机。 我现在遇到网址问题。 例如,当我访问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/的事实。
答案 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/');