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.
2 comments
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!!
Puedes usar uno de los dos ejemplos, si usaste la configuración de Laravel verifica los nombres de los archivos.