Site Perso de

Thomas JANNAUD

Des actualités personnelles sous un style impersonnel, et inversement.



Url propres avec .htaccess / Minimal urls using .htaccess
Un peu d'aide sur .htaccess ça ne se refuse pas ! Who doesn't need a little help with .htaccess :) 19 Juin 2011

First part in French, 2nd part in English

Adieu les ".php" qui traînent, pour configurer votre htaccess pour avoir des url comme https://jjannaud.fr/prog, c'est ici ! Voici la solution, obtenue après plusieurs heures de combat acharné et des lectures entières de forums.

Dans cet exemple, on suppose que l'on aimerait que monsite.com/xxxxx soit traité par la page blog.php comme si l'url entré était monsite.com/blog.php?page=xxxx.

Options +FollowSymLinks
RewriteEngine On
RewriteRule ^blog/(.*)$ blog.php?page=$1 [L]
RewriteCond %{REQUEST_URI} !=/
RewriteCond %{REQUEST_URI} !news.xml
RewriteCond %{REQUEST_URI} !robots.txt
RewriteCond %{REQUEST_URI} !.php$
RewriteRule ^([^/]*)$ $1.php

Ceci permet de remplacer monsite.com/toto par monsite.com/blog.php?page=toto, tout en ne réécrivant pas les url de certains fichiers statiques (news.xml, robots.txt, …) ni de l'adresse si elle est déjà écrite avec .php à la fin.
Plus d'infos sur comment monter son site web et les fichiers .htaccess.

Les serveurs n'ont pas tous la même configuration, ainsi un .htaccess qui fonctionnera chez vous en local ne fonctionnera peut être pas chez votre hébergeur ! Il faudra peut être ajouter des slashs devant des points / des parenthèses, ..., par exemple remplacer xxx.php par xxx\.php. Sur certains serveurs, il faudra aussi mettre des slashs DEVANT le nom des pages :

RewriteRule ^blog/(.*)$ /blog.php?page=$1 [L]
...
RewriteRule ^([^/]*)$ /$1.php

Ecrivez votre .htaccess morceaux par morceaux, commentez certaines lignes (avec #) pour déboguer et voir quelle syntaxe votre serveur reconnait.


No more trailing .php on your website. To configure your .htaccess to have clean urls like https://jannaud.fr/prog, here is the solution.
It was a real pain in the ass to figure out how to so I hope this will be useful and save some time to lots of folks.

In this example, we suppose that we would like yoursite.com/xxxxx be treated by blog.php as if the real input was yoursite.com/blog.php?page=xxxx.

Options +FollowSymLinks
RewriteEngine On
RewriteRule ^blog/(.*)$ blog.php?page=$1 [L]
RewriteCond %{REQUEST_URI} !=/
RewriteCond %{REQUEST_URI} !news.xml
RewriteCond %{REQUEST_URI} !robots.txt
RewriteCond %{REQUEST_URI} !.php$
RewriteRule ^([^/]*)$ $1.php

This will turn the input yoursite.com/foo into yoursite.com/blog.php?page=foo. This will not rewrite the url to some static files (news.xml, robots.txt, …) nor the ones with .php already in the url.

Be careful about one thing : All servers don't have the same config so a .htaccess working locally might not work on your website. A few hints that could do the trick : place some slashs before points, parenthesis, ..., for instance replace xxx.php by xxx\.php. On certain servers, you will have to put a slash BEFORE page names (the resulting one, not the one triggering the rule) :

RewriteRule ^blog/(.*)$ /blog.php?page=$1 [L]
...
RewriteRule ^([^/]*)$ /$1.php

Play with your .htaccess parts by parts, comment out certain lines (with #) to debug and see what your server expects.

À lire aussi :
Laissez un commentaire !

Pas besoin de vous connecter, commencez à taper votre nom et une case "invité" apparaîtra.