Salut les gars ! Dans ce didacticiel, nous allons montrer comment rediriger de force Apache HTTP vers HTTPS
Si vous êtes propriétaire d'un site Web ou administrateur système, il est probable que vous ayez régulièrement affaire à Apache. L'une des tâches les plus courantes que vous effectuerez probablement consiste à rediriger le trafic HTTP vers la version sécurisée (HTTPS) de votre site Web.
Contrairement à HTTP, où les requêtes et les réponses sont envoyées et renvoyées en texte brut, HTTPS utilise TLS/SSL pour chiffrer la communication entre le client et le serveur.
Nous verrons cela de deux manières différentes :
je. Utilisation de l'hôte virtuel.
ii. Utiliser .htaccess
Commençons
Utilisation de l'hôte virtuel
Dans la directive de l'hôte virtuel, vous pouvez spécifier la racine du document du site (le répertoire qui contient les fichiers du site Web), créer une politique de sécurité distincte pour chaque site, utiliser différents certificats SSL, configurer la redirection, et bien plus encore.
Lorsqu'un certificat SSL est installé sur un domaine, vous aurez deux directives d'hôte virtuel pour ce domaine. Le premier pour la version HTTP du site sur le port 80, et l'autre pour la version HTTPS sur le port 443.
Dans les distributions basées sur Red-Hat telles que CentOS et Fedora, les fichiers d'hôtes virtuels sont stockés dans le fichier /etc/httpd/conf.d. Alors que sur Debian et ses dérivés comme Ubuntu, les fichiers sont stockés dans le répertoire /etc/apache2/sites-available
répertoire.
Pour rediriger un site Web vers HTTPS, utilisez le Redirect
directive comme indiqué avec l'exemple "unixcop.com"
<VirtualHost *:80>
ServerName unixcop.com
ServerAlias www.unixcop.com
Redirect permanent / https://unixcop.com/
</VirtualHost>
<VirtualHost *:443>
ServerName unixcop.com
ServerAlias www.unixcop.com
Protocols h2 http/1.1
</VirtualHost>
Explication
Expliquons le code ci-dessus
VirtualHost *:80
– Le serveur Apache écoute les connexions entrantes sur le port 80 (HTTP) pour le domaine spécifié.VirtualHost *:443
– Le serveur Apache écoute les connexions entrantes sur le port 443 (HTTPS) pour le domaine spécifié.
Le ServerName
et ServerAlias
Les directives spécifient les noms de domaine de l'hôte virtuel. Assurez-vous de le remplacer par votre nom de domaine. (dans notre cas unixcop.com)
La ligne en surbrillance, Redirect permanent / https://example.com/
à l'intérieur de l'hôte virtuel HTTP, redirige le trafic vers la version HTTPS du site.
En règle générale, vous souhaitez également rediriger la version HTTPS www du site vers la version non www ou vice versa. Voici un exemple de configuration :
<VirtualHost *:80>
ServerName unixcop.com
ServerAlias www.unixcop.com
Redirect permanent / https://unixcop.com/
</VirtualHost>
<VirtualHost *:443>
ServerName unixcop.com
ServerAlias www.unixcop.com
Protocols h2 http/1.1
<If "%{HTTP_HOST} == 'www.unixcop.com'">
Redirect permanent / https://unixcop.com/
</If>
</VirtualHost>
Le code ci-dessus vérifie si l'en-tête de la requête contient le domaine www et redirige vers la version non-www.
Chaque fois que vous apportez des modifications aux fichiers de configuration, vous devez redémarrer ou recharger le service Apache pour que les modifications prennent effet
.htaccess
est un fichier de configuration par répertoire pour le serveur Web Apache. Ce fichier peut être utilisé pour définir comment Apache sert les fichiers à partir du répertoire où le fichier est placé et pour activer/désactiver des fonctionnalités supplémentaires.
Habituellement, le .htaccess
le fichier est placé dans le répertoire racine du domaine, mais vous pouvez avoir d'autres .htaccess
fichiers dans les sous-répertoires.
Cette méthode nécessite le mod_rewrite
module à charger sur le serveur Apache. Ce module est chargé par défaut sur la plupart des serveurs. Si possible, préférez créer une redirection dans l'hôte virtuel car c'est plus simple et plus sûr.
Pour rediriger tout le trafic HTTP vers HTTPS, ouvrez la racine .htaccess
fichier, et ajoutez-y le code suivant
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://unixcop.com/$1 [L,R=301]
Explication
RewriteEngine On
– active les capacités de réécriture.RewriteCond %{HTTPS} off
– vérifie la connexion HTTP, et si la condition est remplie, la ligne suivante est exécutée.RewriteRule ^(.*)$ https://unixcop.com/$1 [L,R=301]
– rediriger HTTP vers HTTPS avec le code d'état 301 (Moved Permanently).
L'exemple ci-dessous a une condition supplémentaire qui vérifie si la requête commence par www
. Utilisez-le pour forcer tous les visiteurs à utiliser la version HTTPS non-www du site
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\.unixcop\.com [NC]
RewriteRule ^(.*)$ https://unixcop.com/$1 [L,R=301]
Lors de la modification de .htaccess
fichier, vous n'avez pas besoin de redémarrer le serveur car Apache lit le fichier à chaque requête.
Donc, vous savez déjà comment forcer Apache à utiliser HTTPS.
Documentation Apache