Htaccess et PHP
PHP et le fichier htaccess
Accès répertoire
Le fichier .htaccess est un fichier de configuration du serveur Web Apache dont le contenu ecrit en PERL permet de définir des règles dans un répertoire.
Exemples : Interdire l'accès à un répertoire Contenu du fichier .htaccess situé dans le répertoireDeny from all
Copier/coller cet exemple dans un fichier texte et nommé-le ".htaccess" (avec un point devant!). Installez ce fichier dans le répertoire qui doit &être protégé.
Empêcher le listage du contenu d'un répertoire
Pour empêcher les internautes de lister l’ensemble des fichiers contenus dans un répertoire en l'absence d'index (.cgi, .html, .php etc ….), créez un fichier .htaccess contenant la ligne ci-dessous :
Options -Indexes
Protéger un répertoire par un mot de passe
Exemple - local - dans le fichier .htaccess situé dans le répertoire
AuthName "Zone interdite"
AuthUserFile "c:/program files/easyphp5.3.0/www/stage/privee/passe.txt"
AuthGroupFile /dev/null
AuthType Basic
<limit GET POST>
require valid-user
</limit>
- La directive AuthUserFile indique le chemin (le path) du fichier de mot de passe.
- AuthGroupFile défini l'emplacement du fichier contenant les groupes d'utilisateurs autorisés.
Empêcher l'indexation du contenu d'un répertoire
Le plus simple est de créer un fichier .htaccess directement dans le répertoire concerné, et d'y mettre ceci :
Header set X-Robots-Tag "noindex"
Htaccess en local
Attention, dans le package Easyphp, pour que le fichier de configuration htaccess fonctionne en locale, dans le fichier httpd.conf (configuration / Apache) vous devez transformer la propriété de la directive
AllowOverride actuellement à "none" par "All". Soit remplacer "AllowOverride None" par "AllowOverride All"
(le deuxième AllowOverride rencontré suffit, soit sur <Directory "${path}/www">).
Cette modification n'est pas nécessaire avec le package Wamp.
La configuration par défaut est déjà à All sur www.
Pseudo-frame : Si vous utilisez un site web de type "pseudo-frame",
les fonction PHP "include" ou "require_once" sont prioritaires sur le fichier htaccess. Donc un test avec un menu ne fonctionnerais pas.
Si vous avez des problèmes d'adressage, la fonction realpath() permet de connaître le chemin d'un fichier (le path).
Créez un fichier texte avec ce code: <?php echo realpath("index.php"); ?> puis placez ce fichier à la racine de votre site.
Executer ensuite ce fichier "realpath.php" depuis votre navigateur.
Personnaliser les messages d'erreurs (404 et 403)
Exemple dans le fichier .htaccess situé à la racine du site
ErrorDocument 403 /erreurs/403.php
ErrorDocument 404 /erreurs/404.php
Redirection par URL Rewriting
Exemple : dans le fichier .htaccess situé à la racine du site :RedirectPermanent /?page=probleme https://www.easy-micro.com/index.php?page=newprobleme
URL Rewriting
Exemple de réécriture d'adresseRewriteEngine On
RewriteRule ^planning$ /index.php?mapage=8 [L]
RewriteRule ^planning\.php$ /index.php?mapage=8 [L]
Attention, le nom utilisé (ci-dessus, planning) ne doit pas être un nom de dossier existant. Cette technique permet d'utiliser l'adresse https://www.easy-micro.org/planning ou https://www.easy-micro.org/planning.php qui sont deux adresses qui n'existe pas