Le module mod_rewrite d'Apache permet de capturer vos url et de les réécrires.
C'est ce qui permet d'utiliser https://www.tutos.eu/4585 et non https://www.tutos.eu/?n=4585
Une bonne entrée en la matière est de consulter cette page :
https://httpd.apache.org/docs/current/fr/mod/mod_rewrite.html
Activation
Voici comment la réécriture d'url a été faite pour ce site :
Le module mod_rewrite est activé de base chez OVH donc je n'ai rien eu à faire de ce côté là.
Par contre, sur une VM Linux qui sert de maquette, il faut au l'installer avec les commandes
Ensuite, dans le répertoire racine du site, dans le fichier .htaccess le module est activé avec cette ligne :
RewriteEngine On
De là, on peut écrire des règles et poser des conditions. Ainsi index.php a été exclu avec
RewriteCond %{REQUEST_URI} !index.php
Des répertoires ont été exclus par précaution, car ce n'est normalement pas nécessaire. La directive utilisée pour cela est
RewriteCond %{REQUEST_URI} !^/((rep1|rep2|rep3)/.*)$
La redirection s'actionne pour les urls qui commencent éventuellement par / suivies uniquement de chiffres.
Donc l'url doit commencer éventuellement par /, suivi uniquement de chiffres et se terminer par un chiffre, ce qui donne :
RewriteCond %{REQUEST_URI} ^/?[\d]+$
Suite à cela, la règle de réécriture est de prendre la suite de chiffre qui a été mise dans l'url pour la poster sous la variable n :
RewriteRule (.*) index.php?n=$1
Au final pour cet exemple l'ensemble donne
RewriteEngine On
RewriteCond %{REQUEST_URI} !index.php
RewriteCond %{REQUEST_URI} !^/((rep1|rep2|rep3)/.*)$
RewriteCond %{REQUEST_URI} ^/?[\d]+$
RewriteRule (.*) index.php?n=$1
Lien vers le fichier : cliquez ici
Pour créer ou modifier le fichier .htaccess sur un serveur linux avec une config d'apache par défaut, taper
sudo nano /var/www/html/.htaccess
Lien vers le fichier : cliquez ici
Pour faire du débug, il faut modifier le fichier de configuration de votre site.
Si c'est celui par défaut de votre serveur apache, modifiez le avec
nano /etc/apache2/sites-enabled/000-default.conf
Lien vers le fichier : cliquez ici
Ajouter un niveau de log. Le maximum est 8.
Attention : les conséquences sur les performances du serveur peuvent être dramatiques, donc faites bien les manipulations sur un serveur hors production.
LogLevel alert rewrite:trace8
Lien vers le fichier : cliquez ici
Ensuite relancer le service apache pour prise en compte
service apache2 restart
Lien vers le fichier : cliquez ici
Et examiner le fichier de log avec
tail -f /var/log/apache2/error.log
Lien vers le fichier : cliquez ici
Activer le log de mod_rewrite permet de voir par exemple que pour l'url http://monsite/suffixe {REQUEST_URI} ne reçoit pas suffixe mais /suffixe
Pages Web
Site Web | Description |
---|---|
httpd.apache.org | Module Apache mod_rewrite |
Sumtips.com | Exclude Certain Folders from htaccess Rewrite Rules |
webrankinfo.com | Maîtrisez l’URL Rewriting |
Article(s) précédent(s)