.htaccess

Parmi les sujets annexes de gestion des droits, il faut parfois se pencher sur la securisation définie par le serveur (Apache etc..) : celle-ci est controlé par des fichiers spéciaux .htaccess, fournis par SPIP et/ou modifiables par l’utilisateur.

Un fichier de controle d’accès précise au serveur les règles autorisant la lecture du fichier à un navigateur distant, pour le dossier contenant ce fichier.

Article publié le 21 janvier 2013, et actualisé en janvier 2022

 
 
 
 
 
 
 
 
 
 
 
 

Attention, les fichiers .htaccess sont des fichiers système utilisés dans la configuration et le fonctionnement du serveur Web (apache et compatible) pour le traitement des dossiers/répertoires en dépendant ; toute modification erronée peut bloquer votre serveur en erreurs 500 [1] !

Précisons aussi que, pour protéger des répertoires sensibles, SPIP met automatiquement en place plusieurs fichiers .htaccess simples pour interdire l’accès aux zones sensibles :
typiquement sur ./config et ./tmp (voir ci-dessous), qui ne sont pas à modifier.

Quand on parle du .htaccess, les spipeurs veulent en général cibler le fichier .htaccess principal, selon le modèle mis en place à la racine de votre site, qui vous est proposé par SPIP sous le nom htaccess.txt.

Il vous appartient de choisir d’activer, en le renommant par FTP [2] par les deux manipulations suivantes sous FTP (FileZilla, ou TC..) :

  • il faut RETIRER le .txt du fichier htaccess
  • il faut METTRE un POINT AVANT htaccess
  • il faut VERIFIER la place de ce fichier A LA RACINE de votre espace (à coté de spip.php )

Sauf dans le cas Free / Online (voir Des cas..... résolus ! PHP5), le fichier modèle proposé par SPIP est généralement totalement accepté, mais attention : une instruction incorrecte bloquera votre site, donc soyez prêts à le désactiver....

Nota Bene : si votre site est placé dans un sous-dossier du DocumentRoot d’Apache, il est possible que vous deviez paramétrer explicitement la ligne RewriteBase avec le chemin relatif d’accès à la racine de votre site [3]
La nouvelle version 3.1 de SPIP proposera un calcul automatique de ce paramètre :

# Calcule automatiquememt le RewriteBase (qui permet de faire fonctionner
# les belles URLs). De la sorte, un meme site peut etre affiche en racine
# ou dans un sous repertoire sans devoir modifier la ligne RewriteBase.
RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
RewriteRule ^(.*) - [E=BASE:%1]
# En alternative aux 2 lignes precedentes (a commenter dans ce cas),
# vous pouvez indiquer un RewriteBase specifique
#RewriteBase /

Vous pourrez y rajouter de nombreuses modifications éventuelles décrites plus bas ou en Des cas..... résolus ! PHP5 : mais votre attention est attirée sur la sensibilité et l’importance de ce fichier de configuration d’Apache (et d’autres serveurs Web), qui rend difficile de le tester sur une installation locale hors du contexte d’exploitation réelle.

 Le principe des protections d’accès

Le controle d’accès utilise deux directives pour spécifier les accès d’utilisateurs (définis par un couple login/password, ou des adresses IP) autorisés (allow) ou interdits deny).

En application directe de ces principes, pour protéger votre installation, SPIP met en place un blocage interdisant la visualisation de fichiers sensibles, en particulier les fichiers définissant les accès à la base de données : les fichiers du répertoire ./config.

Ainsi, interdire tout accès web à un répertoire (de configuration, ou de sauvegarde...) se fait en déposant dans ce répertoire un fichier texte nommé .htaccess [4] contenant simplement le texte :
deny from all.

 L’usage particulier au paramétrage de SPIP

Le fichier .htaccess optionnel que vous pourrez créer dans le dossier principal de SPIP peut avoir deux usages bien spécifiques, rendus indispensables par certains hébergements ou fonctionnements :
- définition du PHP : voir Des cas..... résolus ! PHP5
- génération des règles de ré-écriture d’URL : ci-dessous

En regle générale, on peut avoir à rajouter quelques instructions : elles seront insérées dans la zone de personnalisation en début du fichier "modèle" fourni par SPIP, par exemple :

################ REGLAGES PERSONNALISES ######################
# Inscrivez ci-dessous vos reglages supplementaires

SetEnv PHP_VER 5_4
SetEnv REGISTER_GLOBALS 0


################ GESTIONS DES URLS SPIP #######################

 URL rewriting "en dur"

Plusieurs solutions co-existent pour l’URL-rewriting, en clair, Ré-écrire les URL à la volée sous une forme sémantiquement plus [5] significative pour les lecteurs humains ou robotisés...

Si vous n’activez pas le fichier .htaccess, vous pouvez néanmoins utiliser une lame du Couteau Suisse pour simuler ce comportement, avec la lame d’administration Belles URL.

- un simple test pour valider le fonctionnement de principe de .htaccess :
dans ce cas, il pourrait être intéressant de remplacer le fichier actuel par un fichier minimaliste ne contenant qu’une instruction pour voir si elle est exécutée ou non.
Par exemple, créer un squelette test.html, et tenter d’y accéder par l’URL www.stite.ext/essai.html :

RewriteEngine On
RewriteBase /
RewriteRule ^essai(\.html)?$    spip.php?page=test [QSA,L]

Si ça marche, le problème se situe dans le htaccess d’origine. Si ça ne marche pas le problème est à chercher du coté de l’hébergeur ou des réglages de l’hébergement ;
en particulier, le réglage standard de votre WampServer n’active pas la fonctionnalité du rewrite_module.... ne cherchez pas ailleurs sur une erreur 500 !

 Et quand il n’y a pas .htaccess

Si votre dossier de site SPIP ne comporte pas le fichier .htaccess [6], vous risquez de rencontrer des comportements "surprenants" !
Le premier symptôme : vous ne pouvez pas appeler un article [7] par son URL réduite, comme ici https://www.spippourlesnuls.fr/300 qui vous affiche l’article avec une URL complète La structure de base de données de SPIP 3 ; seule fonctionnera l’URL cannonique 300.


Merci de nous signaler les coquilles, imprécisions ou erreurs qui figureraient dans cette page.

[1Donc conservez en copie sur votre serveur, et transférable immédiatement par FTP, chaque dernière version qui marche, car une erreur 500 bloquerait immédiatement tous les visiteurs de votre site, y compris les robots référenceurs.

[2Les fichiers de nom commençant par un point étant des fichiers système caché, vous devrez peut-être activer des options de votre client FTP pour pouvoir les apercevoir.

[3Par exemple, sur un Wamp, une ligne RewriteBase incorrecte empêchait tout affichage des images...

[4Attention au point préfixant le nom de fichier système..!

[5Afficher un lien de titre explicite, plutôt qu’un numéro d’article !

[6Attention, il ne suffit pas d’y trouver une version en documentation accessoire : SPIP dépose la version adéquate du fichier, mais sous le nom htaccess.txt qui garantit de ne rien faire : il faut le copier/renommer par FTP en .htaccess !

[7Publié ! Les articles non-publiés ne sont pas visibles sur le site public !


Liens A2A visibles seulement pour les inscrits.
Liens visibles seulement pour les inscrits.

Article publié le 21 janvier 2013, et actualisé en janvier 2022 .

Répondre à cet article