<IfModule mod_rewrite.c>
    # Activer la réécriture d'URL
    RewriteEngine On

    # Définir la base pour les réécritures d'URL. Adapter si nécessaire. Dans cet exemple le repertoire Food est à la racine de www. 
    RewriteBase /Food/back/

    # Règle pour rediriger toutes les requêtes vers index.php
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>

Explication du fichier .htaccess

  • RewriteEngine On : Active le moteur de réécriture d'URL.

  • RewriteBase /FoodAPI/ : Définit le chemin de base pour les réécritures d'URL. Assurez-vous de remplacer /FoodAPI/ par le chemin correct vers votre dossier de projet.

  • RewriteCond %{REQUEST_FILENAME} !-f : Cette condition vérifie que la requête n'est pas un fichier existant.

  • RewriteCond %{REQUEST_FILENAME} !-d : Cette condition vérifie que la requête n'est pas un dossier existant.

  • RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] : Cette règle redirige toutes les requêtes vers index.php et passe l'URL en tant que paramètre url. Le drapeau [QSA] permet d'ajouter la chaîne de requête existante à l'URL réécrite, et le drapeau [L] indique que c'est la dernière règle à appliquer.

Utilisation du fichier .htaccess

  1. Placer le fichier .htaccess : Placez ce fichier dans le répertoire racine de votre projet, c'est-à-dire dans le même dossier que votre fichier index.php.

  2. Configurer le serveur Apache : Assurez-vous que le module mod_rewrite est activé sur votre serveur Apache.  Voir plus bas -> *Configurer le module mod_rewrite sur un serveur Apache

  3. Tester les URL : Une fois le fichier .htaccess en place, vous pouvez tester vos URL pour vous assurer qu'elles sont correctement réécrites. Par exemple, une requête à http://localhost/FoodAPI/foods ou http://127.0.0.1/FoodAPI/foods devrait être redirigée vers index.php avec le paramètre url=foods.

Conclusion

Le fichier .htaccess est un outil puissant pour simplifier et nettoyer les URL de votre API REST. Il permet de masquer les détails d'implémentation et de rendre votre API plus conviviale et professionnelle. Assurez-vous de tester vos URL après avoir mis en place le fichier .htaccess pour vous assurer que tout fonctionne comme prévu.

 

 

 

*Configurer le module mod_rewrite sur un serveur Apache

Pour configurer le module mod_rewrite sur un serveur Apache, les étapes peuvent varier légèrement selon que vous utilisez un système Linux, Windows ou macOS. Voici comment vous pouvez activer mod_rewrite sur ces systèmes :

Sous Linux

  1. Activer mod_rewrite :

    • Ouvrez un terminal.
    • Utilisez la commande suivante pour activer le module mod_rewrite :
      sudo a2enmod rewrite
  2. Redémarrer Apache :

    • Après avoir activé le module, redémarrez le serveur Apache pour que les changements prennent effet :
      sudo systemctl restart apache
  3. Configurer les permissions :

    • Assurez-vous que votre fichier .htaccess est lisible par le serveur Apache.
    • Vérifiez que la configuration de votre site dans Apache permet l'utilisation de .htaccess. Dans votre fichier de configuration du site (souvent situé dans /etc/apache2/sites-available/), assurez-vous que l'option AllowOverride est définie sur All pour le répertoire concerné :
      <Directory /var/www/html> AllowOverride All </Directory>

Sous Windows

Si vous utilisez un serveur Apache sur Windows, comme avec XAMPP ou WAMP, voici comment activer mod_rewrite :

  1. Ouvrir le fichier de configuration d'Apache :

    • Le fichier de configuration principal d'Apache est généralement nommé httpd.conf et se trouve dans le répertoire d'installation d'Apache (par exemple, C:\xampp\apache\conf\httpd.conf pour XAMPP).
  2. Activer mod_rewrite :

    • Ouvrez le fichier httpd.conf avec un éditeur de texte.
    • Recherchez la ligne suivante :
      #LoadModule rewrite_module modules/mod_rewrite.so
    • Décommentez cette ligne en supprimant le # au début :
      LoadModule rewrite_module modules/mod_rewrite.so
  3. Configurer les permissions pour .htaccess :

    • Toujours dans le fichier httpd.conf, recherchez la section <Directory> qui correspond à votre répertoire racine web (par exemple, <Directory "C:/xampp/htdocs">).
    • Assurez-vous que l'option AllowOverride est définie sur All :
      <Directory "C:/xampp/htdocs"> AllowOverride All </Directory>
  4. Redémarrer Apache :

    • Après avoir apporté ces modifications, redémarrez le serveur Apache à l'aide de votre panneau de contrôle XAMPP ou WAMP.

Sous macOS

  1. Ouvrir le fichier de configuration d'Apache :

    • Le fichier de configuration principal d'Apache est généralement situé dans /etc/apache2/httpd.conf.
  2. Activer mod_rewrite :

    • Ouvrez le fichier httpd.conf avec un éditeur de texte.
    • Recherchez la ligne suivante :
      #LoadModule rewrite_module libexec/apache2/mod_rewrite.so
    • Décommentez cette ligne en supprimant le # au début :
      LoadModule rewrite_module libexec/apache2/mod_rewrite.so
  3. Configurer les permissions pour .htaccess :

    • Toujours dans le fichier httpd.conf, recherchez la section <Directory> qui correspond à votre répertoire racine web (par exemple, <Directory "/Library/WebServer/Documents">).
    • Assurez-vous que l'option AllowOverride est définie sur All :
      <Directory "/Library/WebServer/Documents"> AllowOverride All </Directory>
  4. Redémarrer Apache :

    • Après avoir apporté ces modifications, redémarrez le serveur Apache. Vous pouvez le faire en utilisant la commande suivante dans le terminal :
      sudo apachectl restart

Vérification

Pour vérifier que mod_rewrite est activé, vous pouvez créer un fichier PHP simple avec le contenu suivant et l'exécuter sur votre serveur :

<?php phpinfo(); ?>

Recherchez mod_rewrite dans la sortie de phpinfo(). Si vous voyez une section pour mod_rewrite, alors le module est correctement activé.

En suivant ces étapes, vous devriez être en mesure d'utiliser le fichier .htaccess pour la réécriture d'URL sur votre serveur Apache, que vous soyez sous Linux, Windows ou macOS.

<IfModule mod_rewrite.c>
    # Activer la réécriture d'URL
    RewriteEngine On

    # Définir la base pour les réécritures d'URL. Adapter si nécessaire. Dans cet exemple le repertoire Food est à la racine de www. 
    RewriteBase /Food/back/

    # Règle pour rediriger toutes les requêtes vers index.php
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>
Modifié le: samedi 7 juin 2025, 06:58