Si votre mod_rewrite a une règle comme suit:
RewriteRule ^hello/world /?action=hello&sub=world [NC,L]
ou, plus généralisée:
// Assuming only lowercase letters in action & sub..
RewriteRule ^([a-z]+)/([a-z]+) /?action=$1&sub=$2 [NC,L]
alors le même script PHP est appelé, avec les $_REQUEST
variables disponibles ne importe quelle manière l'utilisateur accède à la page (URL sale ou propre).
Nous avons récemment déplacé une grande partie de notre site pour nettoyer urls (en soutenant les plus âgés, « sales » urls) et des règles comme ci-dessus signifie que nous ne devions pas réécrire tout le code qui reposait sur $_REQUEST
params, seule la règles mod_rewrite.
Mise à jour
Mod_rewrite est un module Apache, mais il y a un certain nombre d'options available for IIS aussi.
Quel que soit le serveur Web que vous décidez de prendre en charge, l'approche mod_rewrite se traduira probablement par le moins de travail pour vous. Sans cela, vous devrez probablement créer une charge de fichiers pour imiter la structure de vos URL propres, par ex. dans la racine de votre serveur Web que vous souhaitez créer un répertoire hello
, en plaçant un fichier world
en elle, contenant quelque chose comme ce qui suit:
// Set the $_REQUEST params to mimic dirty url
$_REQUEST['action'] = 'hello';
$_REQUEST['sub'] = 'world';
// Include existing file so we don't need to re-do our logic
// (assuming index.php at web root)
include('../index.php');
Comme le nombre de paramètres que vous souhaitez gérer les augmentations « proprement », de même le nombre des répertoires et des fichiers de raccord dont vous avez besoin, ce qui augmentera considérablement votre charge de maintenance. Mod_rewrite est conçu pour exactement ce genre de problème, et est maintenant supporté sur IIS ainsi que sur Apache, donc je vous recommande vivement d'aller dans cette direction!
Est-ce seulement ces deux options? Ou pouvez-vous avoir http://example.com/hello?sub=world ou http://example.com/world/hello? Qu'en est-il de http://example.com/hello/world?action=somethingelse&sub=different? –