RewriteCond %{QUERY_STRING} book=(\w+)&page=(\d+)
RewriteRule ^index.php /%1/%2? [R=301]
Parce que RewriteRule ne regarde que le chemin d'accès (jusqu'à, mais pas y compris le point d'interrogation), l'utilisation RewriteCond pour capturer les valeurs dans la chaîne de requête.
Notez que les matchs à partir de RewriteCond
sont capturés en %1
,
%2
, etc., plutôt que d' $1
, $2
, etc.
Notez également l' ?
à la fin de l' RewriteRule
. Il raconte mod_rewrite
ne pas ajouter de l'origine de la chaîne de requête de l'URL, si vous vous retrouvez avec
/DesignPatterns/151
intead de
/DesignPatterns/151?book=DesignPatterns&page=151
.
L' [R=301]
, le serveur envoie une réponse de redirection.
Au lieu de réécrire, il indique au client d'essayer de nouveau avec le nouveau
URL. L' =301
fait une redirection permanente, de sorte que, entre autres
les choses, les moteurs de recherche sauront remplacer l'ancienne URL par la nouvelle URL dans
leurs index.