Hoy aprenderás a redirigir cualquier proyecto en Laravel a https, contar con un certificado de seguridad es muy importante para brindar seguridad a los usuarios que visitan la página web o plataforma, te mostrare las dos formas que más conozco para redirigir URLs a HTTPS en Laravel.

Redirigir a SSL de la forma más fácil

La primera opción consiste en agregar una archivo .htaccess en el directorio principal y agregar el siguiente código:

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

Redirigir a SSL configurando Laravel

Te recomiendo que antes realices una copia de seguridad de tu aplicación ya que modificaremos código, atentos con los siguientes pasos.

  • Primero debes crear un Middleware con el nombre de HttpsProtocol.php (tal y como se muestra) en la dirección app/Http/middleware/ y copiar el siguiente código:

Nota debes reemplazar App por el nombre de tu aplicación.

<?php
namespace App\Http\Middleware;

use Closure;
class HttpsProtocol {
    public function handle($request, Closure $next)
    {
            if (!$request->secure()) {

                return redirect()->secure($request->getRequestUri());
            }
            return $next($request); 
    }
}
?>
  • Segundo debes agregar este middleware a cada solicitud agregando la configuración de la regla en el archivo Kernel.php , de la siguiente manera, abrir el archivo Kernel.php ubicado en app/Http/middleware y agregar lo que se muestra en la línea 33, Nota cambiar App por el nombre de tu aplicación solo debes agregar lo que se encuentra en la línea 33:
<?php

namespace Acelle\Http;

use Illuminate\Foundation\Http\Kernel as HttpKernel;

class Kernel extends HttpKernel
{
    /**
     * The application's global HTTP middleware stack.
     *
     * These middleware are run during every request to your application.
     *
     * @var array
     */
    protected $middleware = [
        \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
    ];

    /**
     * The application's route middleware groups.
     *
     * @var array
     */
    protected $middlewareGroups = [
        'web' => [
            \Acelle\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            \Acelle\Http\Middleware\VerifyCsrfToken::class,
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
            \Acelle\Http\Middleware\HttpsProtocol::class,
        ],
        'web_nocsrf' => [
            \Acelle\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            #\Acelle\Http\Middleware\VerifyCsrfToken::class,
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],
        'api' => [
            'throttle:60,1',
            'bindings',
        ],
    ];

    /**
     * The application's route middleware.
     *
     * These middleware may be assigned to groups or used individually.
     *
     * @var array
     */
    protected $routeMiddleware = [
        'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
        'can' => \Illuminate\Auth\Middleware\Authorize::class,
        'guest' => \Acelle\Http\Middleware\RedirectIfAuthenticated::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
        'frontend' => \Acelle\Http\Middleware\Frontend::class,
        'backend' => \Acelle\Http\Middleware\Backend::class,
        'installed' => \Acelle\Http\Middleware\Installed::class,
        'not_installed' => \Acelle\Http\Middleware\NotInstalled::class,
        'not_logged_in' => \Acelle\Http\Middleware\NotLoggedIn::class,
    ];
}

Así de simple podrás redirigir tu aplicación a https, si te funcionó no olvides suscribirte o activar la notificación.

Ver más:  Envía Notificaciones Web Push a Tu Página Web
Shares:

2 Comments

  • bako
    5 enero, 2022 at 10:14 PM

    haciendo esto no me recarga mi pagina me da error ERR_TOO_MANY_REDIRECTS o lo hice mal ? alguien si es tan amable me podria ayudar!!

    Reply
    • anthon
      5 enero, 2022 at 10:25 PM

      Puedes usar uno de los dos ejemplos, si usaste la configuración de Laravel verifica los nombres de los archivos.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *