Forcer la redirection HTTP vers HTTPS sur Laravel 8, 9 et plus

Votre hébergeur ne propose pas le HTTPS par défaut, vous ne pouvez pas modifier le htaccess… Comment faire ? J’ai LA réponse à vos questions.

Forcer la redirection HTTP vers HTTPS sur Laravel 8, 9 et plus

Utiliser le HTTPS sur votre application est une obligation pour que vos visiteurs se sentent en sécurité.

Je vous donne mon astuce pour rediriger toutes vos URL vers le protocole HTTPS par défaut.

Ma méthode pour forcer le HTTPS

J’ai testé plusieurs moyens pour arriver à forcer le HTTPS :

  • Ajouter une redirection dans le htaccess
  • Modifier la configuration de mon Virtual Host
  • Compter sur la bonne volonté de mon hébergeur

Aucune de ces techniques ne m’a apporté un résultat satisfaisant.

J’ai donc cherché un autre angle et j’ai enfin trouvé la solution qui me correspond : créer un Middleware.

J’utilise Laravel depuis 2018 et ma méthode reste inchangée aujourd’hui. Je vous la décris plus bas.

Créer et enregistrer le Middleware

Pour utiliser un Middleware avec Laravel il faut tout d’abord le créer puis ensuite l’enregistrer dans notre application.

Pour cela je créé en premier un fichier dans app/Http/Middleware/HttpsProtocol.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);
}
}

Je viens ensuite enregistrer ce Middleware dans le fichier app/Http/Kernel.php :

/**
* The application's route middleware groups.
*
* @var array<string, array<int, class-string|string>>
*/
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
+ \App\Http\Middleware\HttpsProtocol::class,
],
 
'api' => [
// \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
'throttle:api',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
];

Et voilà, peu importe le point d’entrée sur votre application l’utilisateur sera automatiquement redirigé vers une URL en HTTPS.

En bonus je vous donne un conseil pour forcer le schéma HTTPS sur toutes les URL de votre application.

BONUS : forcer le schéma HTTPS sur les URL

En complément d’une redirection HTTP vers HTTPS il est possible de forcer le schéma HTTPS sur les URL de votre application.

Pour y parvenir, modifier votre fichier app/Providers/AppServiceProvider.php comme ceci :

+Use Facade\URL
 
/**
* Bootstrap any application services.
*/
public function boot()
{
[...]
 
+ URL::forceScheme('https');
}

Contenus associés

Laravel : créer facilement un sitemap

Je vous présente un paquet qui vous permet de générer très facilement un sitemap pour votre site sous Laravel.

Laravel : créer facilement un sitemap
Fonctionnement du blog : pourquoi Laravel et WordPress

J’explique dans cet article pourquoi j’ai choisi Laravel et WordPress comme stack de départ pour le fonctionnement de ce blog.

Fonctionnement du blog : pourquoi Laravel et WordPress
Laravel Livewire : l'importance de sécuriser l'ID de son model

Livewire est un framework pour Laravel qui permet de créer des interfaces dynamiques depuis le backend. Attention tout de même à la sécurité.

Laravel Livewire : l'importance de sécuriser l'ID de son model
Laravel Artisan : make - le guide complet

Le framework Laravel dispose d'un ensemble complet de commandes, la plus utilisée étant certainement make. Connaissez-vous toutes les commandes disponibles ?

Laravel Artisan : make - le guide complet
Laravel Eloquent : insertGetId - insérer et récupérer l'ID d'un enregistrement en une ligne

Laravel offre la possibilité d'insérer un enregistrement et de récupérer son ID en une ligne. Cet article vous explique comment faire.

Laravel Eloquent : insertGetId - insérer et récupérer l'ID d'un enregistrement en une ligne
Hébergez vos polices Google sans effort avec Laravel

Pensez à héberger vos polices Google sur votre serveur : vous gagnerez en vitesse de chargement et vous serez en règle avec le RGPD. Je vous donne ma méthode dans cet article.

Hébergez vos polices Google sans effort avec Laravel