【发布时间】:2016-09-30 05:42:41
【问题描述】:
我想在 laravel 5.2 中不使用 .htaccess 文件将 HTTP 流量重定向到 HTTPS? 我该怎么做,任何解决方案将不胜感激。
【问题讨论】:
我想在 laravel 5.2 中不使用 .htaccess 文件将 HTTP 流量重定向到 HTTPS? 我该怎么做,任何解决方案将不胜感激。
【问题讨论】:
if(empty($_SERVER['HTTPS']) || $_SERVER['HTTPS'] == "off"){
$redirect = 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
header('HTTP/1.1 301 Moved Permanently');
header('Location: ' . $redirect);
exit();
}
对于 Laravel 5.2,你可以这样做:
创建新的中间件(您可以通过命令php artisan make:middleware nameMiddleware 来完成,例如php artisan make:middleware forceSSL
在这个中间件(/app/Http/Middleware/nameMiddleware.php)中放这个:
<?php
namespace App\Http\Middleware;
use Closure;
class nameMiddleware {
public function handle($request, Closure $next) {
if (!$request->secure() && env('APP_ENV') === 'prod') {
return redirect()->secure($request->getRequestUri());
}
return $next($request);
}
}
在 /app/http/Kernel.php 中注册您的中间件
$middlewares = [
...
'\app\Http\Middleware\nameMiddleware'
];
将中间件添加到$routeMiddleware 数组中。
在此之后,您可以直接将中间件添加到Route::get('/', ['middleware' => 'nameMiddleware'] ...);中
【讨论】:
Route::filter('f.ssl', function() { if( ! Request::secure()) { return Redirect::secure(Request::path()); } });