Apache : Quelques infos sur le .htaccess
Table des matières
Un petit topo rapide sur les fichiers .htaccess
Les fichiers .htaccess sont des fichiers de configuration des serveurs HTTP Apache. Leur particularité est leur emplacement : dans les répertoires de données du site Web, au lieu du répertoire de configuration d'Apache. La portée de leur configuration est limitée au contenu du répertoire où ils résident. Cette particularité apporte deux principaux avantages : leur gestion peut être déléguée à des utilisateurs n'ayant pas le droit de gérer le serveur HTTP lui-même ; les modifications sont prises en compte sans qu'il soit nécessaire de redémarrer le serveur HTTP.
Les fichiers .htaccess sont notamment utilisés pour configurer des droits d'accès, des redirections d'URL, des messages d'erreur personnalisés, et des associations d'extension de nom de fichier à un type MIME.
Et pour un changement de nom de domaine, si on veut récupérer la suite d'une URL (exemple linuxtricks.asso-linux-online.fr/truc-bidule pour pointer sur inuxtricks.fr/truc-bidule ) On place le .htaccess sur l'ancien site (linuxtricks.asso-linux-online.fr) avec ceci dedans :
Ces modifs sont prises en compte par les moteurs de recherche et mettent à jour leur base de données.
Pour une migration de dossier, et conserver la requête, on procède de la même façon :
Ainsi, avec ceci dans le dossier /owncloud/.htaccess du serveur, si le favori qu'on a pointe sur https://oxygen.linuxtricks.lan/owncloud/index.php/apps/calendar la requête sera transformée en https://oxygen.linuxtricks.lan/nextcloud/index.php/apps/calendar
Ces modifs ne sont pas prises en compte par les moteurs de recherche.
Si on veut que l'URL /truc appelle /truc.php voici ce qu'il faut mettre dans le htaccess :
Ici, on va rediriger tout le trafic vers HTTPS sauf les requêtes de Lets Encrypt :
Pour autoriser une ou plusieurs IP, compléter le .htaccess avec ceci :
Pour refuser :
Si on utilise par exemple des fichiers php dans d'autres pages avec la notion include_once(), et qu'on ne veut pas qu'il y ait un accès au dossier qui contient ces pages (par exemples pages/*.php) on peut écrire cette directive :
Ouvrir cmd et se rende dans le dossier du site :
Puis créer le fichier ainsi :
Introduction
Un petit topo rapide sur les fichiers .htaccess
Les fichiers .htaccess sont des fichiers de configuration des serveurs HTTP Apache. Leur particularité est leur emplacement : dans les répertoires de données du site Web, au lieu du répertoire de configuration d'Apache. La portée de leur configuration est limitée au contenu du répertoire où ils résident. Cette particularité apporte deux principaux avantages : leur gestion peut être déléguée à des utilisateurs n'ayant pas le droit de gérer le serveur HTTP lui-même ; les modifications sont prises en compte sans qu'il soit nécessaire de redémarrer le serveur HTTP.
Les fichiers .htaccess sont notamment utilisés pour configurer des droits d'accès, des redirections d'URL, des messages d'erreur personnalisés, et des associations d'extension de nom de fichier à un type MIME.
Quelques lignes rapides
Rediriger une URL de manière permanente
Code HTML :
Redirect permanent /news/news-6-13+linuxien-decouvre-windows-7.php /news/0-root/13-linuxien-decouvre-windows-7/
Et pour un changement de nom de domaine, si on veut récupérer la suite d'une URL (exemple linuxtricks.asso-linux-online.fr/truc-bidule pour pointer sur inuxtricks.fr/truc-bidule ) On place le .htaccess sur l'ancien site (linuxtricks.asso-linux-online.fr) avec ceci dedans :
Code HTML :
RedirectMatch 301 /(.*) http://linuxtricks.fr/$1
Ces modifs sont prises en compte par les moteurs de recherche et mettent à jour leur base de données.
Pour une migration de dossier, et conserver la requête, on procède de la même façon :
Code BASH :
RedirectMatch 301 /owncloud/(.*) /nextcloud/$1
Ainsi, avec ceci dans le dossier /owncloud/.htaccess du serveur, si le favori qu'on a pointe sur https://oxygen.linuxtricks.lan/owncloud/index.php/apps/calendar la requête sera transformée en https://oxygen.linuxtricks.lan/nextcloud/index.php/apps/calendar
Redirection temporaire
Code HTML :
Redirect temp / /maintenance.html
Ces modifs ne sont pas prises en compte par les moteurs de recherche.
Pages d'erreur personnalisées
Code HTML :
ErrorDocument 403 /intrdit.html ErrorDocument 404 /erreur.html
Supprimer l'extension .php
Si on veut que l'URL /truc appelle /truc.php voici ce qu'il faut mettre dans le htaccess :
Code HTML :
RewriteEngine on RewriteRule ^([^\.]+)$ $1.php [NC]
Rediriger tout le trafic HTTP vers HTTPS pour Lets Encrypt
Ici, on va rediriger tout le trafic vers HTTPS sauf les requêtes de Lets Encrypt :
Code BASH :
RewriteCond %{REQUEST_URI} !^/.well-known/acme-challenge/ RewriteRule (.*) https://oxygen.linuxtricks.fr$1 [R=301,L]
Autoriser / refuser une ou des IP à un dossier
Pour autoriser une ou plusieurs IP, compléter le .htaccess avec ceci :
Code BASH :
Require all denied Require ip 10.21.21.100 Require ip 10.21.21.102 ...
Pour refuser :
Code BASH :
<RequireAll> Require all granted Require not ip 162.247.72.201 Require not ip 198.50.159.155 </RequireAll>
Interdire l'accès à un dossier
Si on utilise par exemple des fichiers php dans d'autres pages avec la notion include_once(), et qu'on ne veut pas qu'il y ait un accès au dossier qui contient ces pages (par exemples pages/*.php) on peut écrire cette directive :
Code BASH :
RedirectMatch 403 /pages/(.)+$
Créer un fichier .htaccess sous Windows
Ouvrir cmd et se rende dans le dossier du site :
Code BASH :
cd C:\....
Puis créer le fichier ainsi :
Code BASH :
echo >.htaccess