Fichier .htaccess : Erreur SSI, Internal Server Error,…

1) Principe et fonctionnement

Un serveur d’hébergement sans aucune restriction technique et fonctionnelle, exposerait vos sites et services à de nombreuses failles de sécurité.  Il s’exposerait lui même à des failles, également.
De ce fait,  nous avons pré-configuré nos serveurs dédiés ainsi que nos hébergements mutualisés de façon à ce qu’ils soient prémunis de ces failles de sécurité.

Cette pré-configuration empêche la modification des directives sensibles du serveur.
Afin d’utiliser certaines fonctionnalités, vous avez la possibilité d’utiliser des fichiers .htaccess.

Les fichiers .htaccess servent à modifier localement la configuration du serveur Apache.
Il est donc possible d’adapter la configuration du serveur en fonction des différents dossiers de l’hébergement.
De ce fait vous pouvez créer autant de fichier .htaccess que de dossier qu’il y a sur l’hébergement.

Cet article a pour but de parcourir les erreurs fréquentes dues à un fichier .htaccess sur votre hébergement dédié ou mutualisé.

Si vos directives ne figurent pas dans ce tutoriel, vous pourrez les trouver sur le site officiel d’Apache (Site officiel d’Apache).

2) Erreurs .htaccess sur hébergement mutualisé

Lorsque que vous essayez d’agir sur les directives Apache dans un fichier .htaccess, il est possible que le serveur vous retourne un message d’erreur du type :

ERREUR SSI

Erreur SSI dans votre fichier
SSI instruction error in your file.

Cette erreur est courante. Voici les trois cas les plus courants qui peuvent la générer:

2.1 ) Lorsque vous tentez d’exécuter un script php qui demande trop de ressource

taille mémoire: memory_limit, temps d’exécution:max_execution_time,…,

Le script est « tué » par le serveur et renvoie cette erreur.

Les variables php sont modifiables dans votre icoAdmin (avant dernier onglet),
Si vous pensez que le problème vient de là, veuillez  augmenter les valeurs des variables php et relancer votre script.

2.2 ) Lorsque vos données de connexion à votre base de donnée Mysql sont incorrects

Vérifiez la configuration de votre connexion dans le fichier concerné : Serveur, base de données, identifiant, mot de passe

2.3 ) Lorsque vous essayez  d’activer ou de désactiver une option ou une directive dans un fichier .htaccess qui y serait déjà ou qui ne serait pas autorisée, le serveur renvoie une erreur.

Sur tous nos packs mutualisés, nous avons mis en place une configuration de sécurité qui ne permet pas par exemple une intrusion sur le serveur via un compte FTP.
Cela vous semble peut-être bloquant mais cette configuration est nécessaire pour ne pas pénaliser l’ensemble des hébergements mutualisés de la plateforme.

Directives d’Apache les plus courantes qui sont autorisées ou non  par le serveur sur votre hébergement mutualisé :

DirectoryIndex index.php index.html index.htm : Autorisée, elle permet de diriger un utilisateur vers une page web lorsqu’il tape www.domaine.fr dans un navigateur. Le serveur affiche le premier fichier existant de la liste (en partant de la gauche).

ErrorDocument 404 /pageinexistante.php : Autorisée, elle permet de personnaliser votre page d’erreur 404.
Elle redirige vers une page particulière lorsqu’un utilisateur appelle une page qui n’existe pas .
Dans ce cas, l’utilisateur sera dirigé vers pageinexistante.php .

AddDefaultCharset UTF-8 : Autorisée, elle permet de modifier le décodage de la page.
Cela est utile quand la page a été encodée dans un autre format (dans votre éditeur de code).
Si le décodage ne correspond pas à l’encodage, vous allez voir apparaître des caractères spéciaux à la place des caractères accentués par exemple.

RewriteEngine on : Autorisée, elle permet de pouvoir effectuer des réécriture d’url.

RewriteCond %{HTTP_HOST} ^www.votredomaine.com$ : Autorisée, elle permet d’autoriser la directive RewriteRule qui la suit.
Elle permet par exemple de rediriger dans un sous-dossier en fonction du nom de domaine demandé si une directive RewriteRule la suit.

RewriteRule ^(.*)\.html$ $1.php [L] : Autorisée (si RewriteEngine a été activée), elle permet de réécrire les urls se terminant en .php par des urls en .html

Options +Indexes : Refusée, cette option permet de lister tous les fichiers présents dans un dossier qui n’aurait pas de directive DirectoryIndex. Elle peut être la source de problèmes de sécurité.

Options +FollowSymLinks : Refusée, cette option est déjà activée par défaut sur la configuration du serveur.
Elle permet de garder la hiérarchie des liens dans chaque sous-dossier. Par exemple, elle est nécessaire pour utiliser la directive RewriteRule sans être obligé de répéter ces directives dans chaque .htaccess des sous-dossiers.

AllowOverride All : Refusée pour des raisons de sécurité, elle permet d’autoriser TOUTES les directives du serveur.

Options +Includes : Refusée pour des raisons de sécurité, elle permet de réaliser des inclusions coté serveur.

Options +Multiview : Refusée pour des raisons de sécurité, elle permet , si dans l’url demandée un dossier n’existe pas alors le serveur va rechercher dans le dossier précédent (du chemin de l’url) un fichier qui porterait le même nom.

L’ensemble des directives est disponible sur le site d’Apache (Directives d’Apache).

3)Erreurs .htaccess sur serveur dédié

Sur nos serveurs dédiés nous mettons également en place une configuration du serveur Apache par défaut.
Cette configuration est néanmoins entièrement modifiable selon vos besoins.
Les erreurs rencontrées à cause des .htaccess ou de la configuration d’Apache est l’erreur 500:

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, support@icodia.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Cette erreur étant assez générique pour Apache, elle vous permettra simplement d’identifier le type du problème.
Dans ce cas, il viendra d’un fichier .htaccess ou du fichier général de la configuration d’Apache (httpd.conf pour CentOs par exemple).

De la même manière que pour nos serveurs mutualisés, les règles d’Apache les plus sensibles sont désactivés par défaut (dans les fichiers .htaccess) :  AllowOverride All, Options +Includes, Options +Multiview,… .
Vous pouvez analyser les directives qui posent problèmes dans les fichiers de logs d’erreurs de votre site.

Ce genre d’erreur apparaît souvent quand vous essayez d’installer une application comme Magento (par exemple) qui utilise des options sensibles.