Services et serveurs

Apache : Quelques infos sur le .htaccess

Table des matières

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
Cette page a été vue 20328 fois