阻止 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]
我有一个关于在 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]