【问题标题】:How to redirect HTTP traffic to HTTPS without using .htaccess file in laravel 5.2如何在 laravel 5.2 中不使用 .htaccess 文件将 HTTP 流量重定向到 HTTPS
【发布时间】:2016-09-30 05:42:41
【问题描述】:

我想在 laravel 5.2 中不使用 .htaccess 文件将 HTTP 流量重定向到 HTTPS? 我该怎么做,任何解决方案将不胜感激。

【问题讨论】:

    标签: .htaccess http https


    【解决方案1】:
    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' =&gt; 'nameMiddleware'] ...);

    【讨论】:

    • 谢谢兄弟,你的代码是在core php中运行的,但是我需要在laravel中运行它不工作的地方?
    • 您可以创建过滤器:Route::filter('f.ssl', function() { if( ! Request::secure()) { return Redirect::secure(Request::path()); } });
    • 如何创建过滤器?你能详细说明一下吗
    • 兄弟我用的是laravel 5.2
    • 据我所知,laravel 5.2 中没有过滤器
    猜你喜欢
    • 2015-12-06
    • 2017-10-16
    • 2017-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-25
    • 2019-03-18
    相关资源
    最近更新 更多