阻止 Laravel 8 中的 http 访问

Preventing http access in Laravel 8

我有一个关于在 laravel 中强制使用 HTTPS 的问题,我在 AppServiceProvider.php 中添加了一个条件,创建了一个中间件并修改了 .htaccess 文件。但是我仍然可以访问http页面。有没有其他方法可以让 laravel 重定向到 https 而不是 http,以及如何防止用户访问 http 地址?谢谢!

我的.htaccess :

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/public/
RewriteRule ^(.*)$ /public/ [L,QSA]
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

AppServiceProvider.php :

public function boot()
{
    if (env('APP_ENV') === 'production') {
        $this->app['request']->server->set('HTTPS','on'); // this line

        URL::forceSchema('https');
    }
}

HTTPS 协议中间件:

public function handle(Request $request, Closure $next)
{
    if (!$request->secure() && app()->environment('production')) {
        return redirect()->secure($request->getRequestUri());
    }
    
    return $next($request);
}

将此添加到 .htaccess 文件的顶部

RewriteEngine On 
RewriteCond %{HTTPS} off 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]