Les fichiers .htaccess
Réponse AJAX

Introduction

Les fichiers .htaccess servent à spécifier la configuration d'Apache pour un répertoire et ses sous-répertoires. Ils contiennent donc des directives similaires au fichier de configuration d'Apache httpd.conf.

Dans le httpd.conf, la directive AllowOverride autorise ou interdit certains éléments de configuration dans les .htaccess. Par exemple :
AllowOverride none interdira tout élément de configuration dans les .htaccess
AllowOverride all autorisera tout élément de configuration dans les .htaccess

L'utilisation des fichiers .htaccess est fortement déconseillée à cause de la baisse de performance induite sur le serveur Apache. Ne les utilisez que lorsque vous n'avez pas accès à la configuration principale du serveur (par exemple dans un hébergement mutualisé). Plus d'infos sur apache.org.

Une application courante : la réécriture d'URL

Toute la doc sur apache.org pour la réécriture d'URL et le module mod_rewrite en général.

Premier cas : améliorer le référencement dans les moteurs de recherche

Par exemple, le site d'actualités lepoint.fr réécrit ses URL ainsi :

URL visible dans les liens hypertextes :
http://www.lepoint.fr/monde/autriche-explosion-dans-un-terminal-gazier-plusieurs-blesses-12-12-2017-2178984_24.php

URL après réécriture :
http://www.lepoint.fr/index.php?idarticle=2178984.php

Pourquoi ? Parce que les mots-clé présents dans l'URL ont un poids important lors du référencement dans les moteurs de recherche. Il vaut mieux rendre visible une URL pleine de mot-clés pertinents pour le référencement, puis on la réécrit en une URL plus facilement exploitable par PHP.

La règle de réécriture dans le fichier .htaccess (remarquez la parenthèse capturante et sa réutilisation avec $1) :

RewriteEngine on RewriteRule "\d{2}-\d{2}-\d{4}-(\d+)_\d{2}\.php" "/index.php?idarticle=$1.php"

Deuxième cas : les contrôleurs des modèles MVC

Par exemple, le site de photos de Pierre B. réécrit ses URL ainsi :

URL visible dans les liens hypertextes :
http://pbarbin.bts-sio.com/ProjetPhoto/page/accueil

URL après réécriture :
http://pbarbin.bts-sio.com/ProjetPhoto/frontend.php?page=accueil

Pourquoi ? Pour avoir des URL plus simples et plus lisibles.

La règle de réécriture dans le fichier .htaccess (remarquez encore la parenthèse capturante et sa réutilisation avec $1) :

RewriteRule ^page/([0-9a-zA-Z\-]+) frontend.php?page=$1 [L,QSA]

Vous remarquez l'utilisation d'options (ou drapeaux) [L,QSA], qui sont tous expliqués sur apache.org :

Sur un de vos projets (films, photos, ou tout autre projet de votre choix), transformez les liens hypertextes vers les fiches des films / photos / etc.

au lieu d'avoir des URL comme :
href=fiche.php?film_id=27070

on veut avoir :
href=le-seigneur-des-anneaux-la-communaute-de-l-anneau-27070

Vous aurez besoin du cours sur les expressions régulières.

La nouvelle URL sera transformée, grâce à une règle de réécriture dans un .htaccess, en l'ancienne URL pour que tout marche comme avant.

Collez ici le contenu du fichier .htaccess :

Votre réponse n°1

Collez ici une URL vers une fiche de film / de photo / etc. de votre site (URL complète depuis http://, et fonctionnelle) :

Votre réponse n°2

La protection des répertoires

Pour protéger un répertoire, par exemple pour qu'un internaute ne puisse pas aller voir directement un dossier d'images ou de photos de votre site, il suffit de placer à la racine de ce répertoire un fichier .htaccess qui contient le code suivant :

<Files *> Deny from all </Files>

Protégez le répertoire des photos de votre projet photo, puis collez ici l'URL du répertoire protégé :

Votre réponse n°3