mod-rewrite
Réécritures internes de base
Recherche…
URL de fantaisie au script PHP
Dans cet exemple, nous réécrivons les URL du formulaire http://example.com/topic/id-seoname
en un script php qui prend un identifiant en entrée. Cet exemple attend que la règle soit dans un contexte "par répertoire" .
RewriteEngine on
RewriteRule ^topic/([0-9]+)-[^/]*/?$ /topics.php?id=$1 [L]
Dans cet exemple, topic/
est le préfixe commun de tous les sujets. Il est suivi par un numéro utilisé par le script. Enfin, le nom du référencement est affiché. Ce nom de référencement est ignoré par mod_rewrite, car il n’y est que pour des raisons distinctes. Le deuxième argument de RewriteRule
contient l'URL à réécrire. L'espace réservé $1
est remplacé par le contenu du premier groupe de capture de l'expression régulière avant celle-ci. Dans ce cas, il sera remplacé par ce qui correspond à ([0-9]+)
.
URL avec la chaîne de requête au script PHP
Pour correspondre à une chaîne de requête, une condition doit être ajoutée à RewriteRule
. Cela se fait en plaçant les directives RewriteCond
avant la règle correspondante. Dans l'exemple suivant, nous réécrivons dynamiquement une ancienne URL en une nouvelle URL.
RewriteCond %{QUERY_STRING} ^name=([^&]*)$
RewriteRule ^oldscript\.php$ newscript.php?username=%1 [L]
S'il vous plaît noter que pour correspondre au point littéral, nous devons y échapper avec une barre oblique. %1
est remplacé par le premier groupe de capture de la condition précédente. Dans ce cas, il est remplacé par tout ce qui correspond à ([^&]*)
.