[英]Laravel HTTPS routes
今天我决定将我的网站移至 HTTPS。 早期我的网站在 HTTP 上工作。
我的问题是误解了 Laravel 如何在辅助函数route('name')
传递 HTTP 和 https
我将config/app.php
网站 URL 更改为https://www.domain.name
,我认为这个解决方案对我有帮助。 但我得到了一个奇怪的结果。
在php artisan tinker
如果我通过route('ROUTE.NAME')
我得到了正确的链接https://www.domain.name/route/path
但在刀片模板中我得到了http://www.domain.name/route/path
与\\URL::to('/')
相同的情况
也许有人可以向我解释为什么会发生这种情况?
@dekts 响应是正确的,但放置此类东西的“正确”位置是引导方法上的“ app/Providers/AppServiceProvider.php ”。
//file: app/Providers/AppServiceProvider.php
use Illuminate\Support\Facades\URL;
class AppServiceProvider extends ServiceProvider {
public function boot()
{
if (app()->environment('remote')) {
URL::forceScheme('https');
}
}
...
}
您还可以在“ .env ”文件中添加一个新变量,例如:
#file: .env
FORCE_HTTPS=true
并将条件更改为
//file: app/Providers/AppServiceProvider.php
public function boot()
{
if(env('FORCE_HTTPS',false)) { // Default value should be false for local server
URL::forceScheme('https');
}
}
希望这有帮助。
编辑:修正forceSchema
到forceScheme
上的评论中指出。 ;)
我为此苦苦挣扎了多年。 我的解决方案是将以下内容放在我的 routes.php 文件中(您可能更喜欢不同的地方)
我还在这一行周围包装了一个条件语句,因此它仅适用于我的远程配置:
if (App::environment('remote')) {
URL::forceSchema('https');
}
您可以尝试在boot
方法中添加您的 AppServiceProvider。 这里: app/Providers/AppServiceProvider.php
或者另一种方式:
所以我想通了。 这并不容易,但在您的AppServiceProvider.php
您必须添加: $this->app['request']->server->set('HTTPS', true);
在register
方法中。 我就是这样想出来的。
顺便说一句。 设置APP_URL
对您的应用程序的HTTP
端没有任何作用,它是为工匠准备的。
附注。 CloudFlare HTTPS
重写也是个好主意:)
在 .env 文件中
FORCE_HTTPS=true
在 app/Providers/AppServiceProvider.php
public function boot()
{
if(env('FORCE_HTTPS',false)) {
URL::forceScheme('https');
}
}
5.4之后方法名是forceScheme
如果你使用' forceSchema ' 会得到一个错误
"Method Illuminate\Routing\UrlGenerator::forceSchema does not exist."
自动检测http/https
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\URL;
use Illuminate\Support\Facades\Request;
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
/* Use https links instead http links */
if (Request::server('HTTP_X_FORWARDED_PROTO') == 'https')
{
URL::forceScheme('https');
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.