Le URL Rewriting (en français : réécriture d'URL) permet à un site Web dynamique d'avoir des adresses URL "propres" et pertinentes.
Dans cet article, nous allons voir à quoi sert la réécriture d'URL, et comment la mettre en place sur son serveur apache.
Normalement, une adresse URL d'un site dynamique ressemble en vérité à ceci :
Mais si nous dictons une règle de réécriture au serveur, cette URL pourrait être interprétée de la même façon :
La réécriture d'URL est pas mal du tout pour obtenir un meilleur référencement auprès de notre ami Google. Si vous souhaitez faire de la réécriture d'URL sur votre serveur local à la maison, il vous faudra probablement activer le module de réécriture d'URL (nommé mod_rewrite) d'Apache. Ce n'est pas une procédure très complexe, mais il y a matière à se casser la tête.
Voici dont comment activer mod_rewrite si vous utilisez EasyPHP ou Apache2 en serveur dédié. Prenez note que si vous utilisez MAMP ou MAMP PRO, le module mod_rewrite est déjà présent et activé.
La seule différence entre l'activation du module mod_rewrite pour EasyPHP 1.8 et la pour EasyPHP 2 est que dans la version 2, il n'y qu'une ligne à enlever en commentaire.
Effacez le dièse (#) devant les lignes suivantes, dans la configuration d'EasyPHP, qui se trouve dans le fichier httpd.conf (Menu e/Configuration/Apache dans EasyPHP) :
Ensuite, toujours dans le même fichier de configuration, recherchez la balise <Directory> correspondant à votre site. Ça devrait ressembler à ça :
Vous voyez « AllowOverride None »? Changez-le pour « AllowOverride All ». Cette petite modification va dire au serveur apache de prendre en compte le fichier .htaccess. Sans ce changement, votre fichier .htaccess sera ignoré par le serveur.
Décommentez les 2 lignes suivantes (effacez le dièse # devant la ligne) dans la configuration d'EasyPHP, httpd.conf (Menu e/Configuration/Apache dans EasyPHP)
Cherchez également dans le même fichier :
Prenez garde à ce que AllowOverride All soit bien configuré à ALL et pas à NONE.
Dans la version 1.8 d'Easyphp, il est déjà à ALL, mais dans la version 2.0 d'EasyPHP, nous sommes obligés de le changer à la main. Attention, si AllowOverride n'est pas bel et bien configuré à ALL, le fichier .htaccess ne peut pas être pris en compte par le serveur apache, alors c'est très important (et simple)!
La procédure est très simple. Lancez la console (Pour les Macs, c'est Terminal dans les utilitaires système des Applications) et tapez ceci :
Il faut ensuite modifier un peu la configuration du serveur Apache, pour qu'il n'ignore pas le .htaccess. On ouvre le fichier de configuration :
Trouvez la balise <Directory> correspondant à votre site. Dans cette balise, recherchez AllowOverride None, et modifiez-le en inscrivant AllowOverride All.
Il est possible qu'il y ait un fichier par défaut, dans ce cas il sera probablement nommé 000-default.
Une fois vos modifications sauvegardées, redémarrez le serveur.
C'est très simple, écrivez
dans un fichier PHP, puis vérifiez que « mod_write » y est. Si ce n'est pas le cas, il y a quelque chose qui cloche. Évidemment, ça signifie que la réécriture ne fonctionne pas, révisez les étapes précédentes, vous avez probablement oublié quelque chose.
Créez un fichier .htaccess (le nom du fichier commence par un point), et mettez-le à la racine du site.
Sous Windows, ce point pose un certain problème car cette syntaxe appartient normalement aux fichiers cachés. Il est possible de créer le fichier .htaccess en se servant du bloc-note de Microsoft Windows, en sauvegardant le fichier selon cette syntaxe : ".htaccess" (oui, avec des guillemets!).
Vous pouvez aussi le renommer dans le DOS, par exemple si vous l'aviez sauvegardé en format texte .txt :
Insérez ces lignes de code à l'intérieur du fichier .htaccess :
Créez-vous un fichier qui s'apelle page_test.html, également à la racine du site aux côtés du fichier .htaccess.
Maintenant que la règle d'écriture est écrite, essayez d'accéder à essai.html.
Commentaires
Merci beaucoup
Merci beaucoup
Béni soit Guy Labbé Des
Béni soit Guy Labbé
Des heures, des jours, de la sueur et des larmes pour enfin arriver a faire fonctionner ce satané Rewriting en local sous Easy Php 5.3.0 !
Et soudain une lumière divine apparue a la lecture des saintes écritures...
Guy ! MERCI.
Très heureux d'avoir pu
Très heureux d'avoir pu t'être utile avec cet article! Si tu as des infos complémentaires, n'hésite pas à les partager
Loaded Modules core
Loaded Modules core mod_win32 mpm_winnt http_core mod_so mod_actions mod_alias mod_asis mod_auth_basic mod_authn_default mod_authn_file mod_authz_default mod_authz_groupfile mod_authz_host mod_authz_user mod_autoindex mod_cgi mod_dir mod_env mod_include mod_isapi mod_log_config mod_mime mod_negotiation <strong>mod_rewrite </strong>mod_setenvif mod_php5Bonjour,
EasyPhp 2, voilà l'info de Phpinfo: mode_rewrite à la place de mode_write.
Bonjour. Chez moi ça ne
Bonjour.
Chez moi ça ne fonctionne pas du tout. Je suis sous windows 7 64bits et easyPHP 1.8
Si vous aviez une idée.
Merci
Peux-tu m'envoyer ton fichier
Peux-tu m'envoyer ton fichier httpd.conf ? info at guylabbe point ca
Merci bcp, pour cette aide
Merci bcp, pour cette aide !!! Bonne continuation sur le Web !
je suis avec Mamp j'ai fait
je suis avec Mamp j'ai fait un dossier teste placé a la racine du site dans lequel j'ai place un fichier teste.html et un fichier .htaccess dans lequel j'ai inscrit :
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^inconnu\.html$ /teste/teste.html [L]
puis j'ai appelle ma page par http//www monsite/teste/inconnu.html
cela aurais du afficher ma page teste.html mais j'ai un no found pour dans mon fichier conf du dossier apache LoadModule rewrite_module modules/mod_rewrite.so est bien activé y t'il quelque chose que je n'ai pas bien fait ou que j'ai oublié
Bonjour, J'ai fait la même
Bonjour,
J'ai fait la même manip. et le problème vient du chemin indiqué :
RewriteRule ^inconnu\.html$ /teste/teste.html [L]
Puisque les deux fichiers sont dans le même dossier le chemin est simplement:
RewriteRule ^inconnu\.html$ teste.html [L]
Si ça peut aider...
Merci pour ce tuto!
As-tu essayé sans dossier
As-tu essayé sans dossier pour commencer; Je suis pas un expert d'expressions régulières disons, mais essaie :
RewriteRule ^teste/inconnu\.html$ /teste/teste.html [L]
ou bien :
RewriteRule inconnu\.html /teste/teste.html [L]
Merci !
Merci !
Commenter sur ce sujet :