Notes sur la création de RewriteRules

Pour les offres Hébergement Linux et Serveur Dédié Managed

Nous vous montrons quelles sources d'erreur vous pouvez vérifier si vos règles de réécriture (RewriteRules) ne fonctionnent pas comme souhaité.

Vous pouvez renommer et rediriger des pages dans un fichier .htaccess en utilisant des règles de réécriture. Par exemple, vous pouvez renommer les URL de vos pages Web pour l'optimisation pour les moteurs de recherche (SEO).

Veuillez noter : Les règles de réécriture sont définies dans un fichier .htaccess sur le serveur. Nous expliquons comment créer un fichier .htaccess dans l'article Créer des fichiers commençant par un point sous Windows. Veuillez vous assurer que le fichier que vous chargez sur votre espace Web via WebTransfert ou FTP s'appelle bien .htaccess.

 

mod_rewrite et activation du RewriteEngine

Sur les serveurs d'Hébergement, le module Apache mod_rewrite est déjà actif par défaut. Pour que vos règles de réécriture puissent prendre effet, activez le RewriteEngine. Pour ce faire, entrez la commande suivante au début de votre .htaccess :

RewriteEngine On

Paramètre RewriteBase et spécification des répertoires

Après l'activation de RewriteEngine, RewriteBase doit également être spécifié au début du fichier .htaccess :

RewriteBase /

Avec RewriteBase, vous définissez le répertoire "de départ" de la RewriteRule. Si la RewriteBase est spécifiée avec / comme ci-dessus, il s'agit du répertoire auquel le domaine à rediriger est connecté. Vous pouvez savoir à quel répertoire un domaine est actuellement connecté via votre 1&1 IONOS dans la liste de vos domaines.

RewriteBase et RewriteRule dans le même répertoire

Si vous voulez que la RewriteRule créée prenne effet dans le même répertoire que celui dans lequel la RewriteBase a été définie, ne spécifiez pas d'autres chemins de répertoire dans votre RewriteRule. Il suffit de spécifier le fichier avec le /.

RewriteEngine On
RewriteBase /
RewriteRule ^([a-z]+)\.html$ /index.php?$1 [R,L] 

RewriteBase et RewriteRule dans des répertoires différents

Si une RewriteRule doit prendre effet dans un répertoire autre que celui spécifié par la RewriteBase, le répertoire doit être défini.

Exemple RewriteRule, qui devrait fonctionner dans un répertoire différent de celui spécifié par RewriteBase

La règle RewriteRule suivante spécifie que le fichier index.html doit être chargé automatiquement à partir du répertoire /test chaque fois qu'une page HTML inexistante est appelée.

RewriteEngine on
RewriteBase /
RewriteRule ^(.*)\.html$ test/index.html 

Si le domaine avait déjà été connecté au répertoire /test via le 1&1 IONOS, la spécification du répertoire /test dans la RewriteRule ne serait plus nécessaire, puisque celle-ci est déjà définie via la spécification dans la RewriteBase.

Conseils pour éviter les erreurs

Veuillez noter : Les règles de réécriture peuvent être très complexes et peuvent causer une erreur 500 même à cause d'une toute petite erreur. De telles erreurs peuvent résulter du fait qu'un seul caractère a été entré incorrectement. Il ne s'agit pas d'une panne de serveur. En règle générale, le site fonctionne sans problème dès que les lignes correspondantes dans le fichier .htaccess ont été corrigées.

Nous énumérons ici les causes d'erreurs les plus courantes qui peuvent garantir qu'une règle de réécriture ne prend pas effet, même si elle ne produit pas d'erreur 500.

  • Assurez-vous que le fichier .htaccess a été placé dans le bon répertoire. Notez qu'un .htaccess est récursif. Il affecte donc le répertoire dans lequel il a été sauvegardé et ses sous-répertoires respectifs.

  • Évitez de charger des fichiers .htaccess dans les sous-répertoires d'un répertoire contenant déjà un fichier .htaccess. Les erreurs dans un .htaccess d'un sous-répertoire peuvent, dans certaines circonstances, affecter négativement les règles de réécriture du niveau supérieur de répertoire.

  • Pour cette raison, il est préférable de créer un répertoire séparé pour chaque domaine ou présence Web. Cela vous permet de définir facilement des fichiers .htaccess séparés et de réécrire les règles pour chaque domaine sans risquer qu'elles interfèrent entre elles.

  • Avez-vous créé un répertoire protégé dans le même répertoire en utilisant le 1&1 IONOS ? Cette fonction écrase les fichiers .htaccess que vous avez créés et rend ainsi vos règles de réécriture inefficaces. Notre recommandation : Créez vous-même la protection du répertoire dans votre .htaccess en utilisant l'article Configurer une protection de répertoire en utilisant .htaccess et FTP.

  • Vérifier si des fonctions ont été saisies sous forme de commentaires (désactivées). Certains scripts pré-construits et systèmes de gestion de contenu (CMS), comme Joomla, contiennent des règles de réécriture sous forme de commentaires pour éviter les problèmes lors de l'installation. Dans un .htaccess, des fonctions sont saisies sous forme de commentaires si elles sont précédées en début de ligne par un "#" :

# Exemple de Rewrite-Rule:
# (redirige http://domain.fr/xyz.html vers http://domain.fr/index.php?xyz
#
RewriteEngine on
RewriteBase /
# RewriteRule ^([a-z]+)\.html$ /index.php?$1 [R,L] 

Dans cet exemple, la règle de réécriture a été saisie sous forme de commentaire et n'a donc aucun effet. Supprimez le "#" avant RewriteRule et enregistrez le .htaccess modifié sur le serveur.

  • Vérifiez si les permissions de fichier requises (chmod) ont été assignées au fichier .htaccess. Dans WebTransfert, cliquez avec le bouton droit de la souris sur les permissions du fichier .htaccess et sélectionnez Modifier les permissions. Entrez la valeur 644 dans le champ Notation octale. Ceci est suffisant pour les fonctions d'un .htaccess.
  • Vérifiez soigneusement que les commandes ne contiennent pas de fautes de frappe et que rien ne manque.