Je suis en train de construire une application web qui est lourde pour le client, les données étant poussées en morceaux par le serveur.Quelle est la meilleure façon de mettre en œuvre une URL conviviale qui a plusieurs variables en utilisant mod_rewrite?
Je suis en train de mettre en œuvre une solution pour une solution d'URL conviviale qui prend une URL comme:
Cela équivaut à une série de variables non visibles. Ainsi, il pourrait finir par le traitement comme ceci:
http://exmample.com/index.php?loc=London&type=2&priceCat=10-15
Je reçois les valeurs en passant l'URL conviviale comme paramètre puis revenir l'URL complète. Mon implémentation initiale utilisait une règle mod_rewrite pour transmettre à un script qui extrait l'URL amicale, interroger la base de données pour une URL amicale correspondante et renvoyer l'URL complète avec tous les paramètres auxquels elle correspond, construire la chaîne d'URL avec ceci transmettre à l'adresse Web dont il extraira ensuite les paramètres à l'avant de l'application Web.
Cependant, je perds l'URL amicale lorsque j'utilise la fonction d'en-tête php ("Location: http://example.com") pour qu'ils voient l'URL complète avec les paramètres. C'est l'une des exigences secondaires que j'essaie de remplir.
J'ai alors pensé que comme mon application web est trop lourde, devrais-je essayer de rendre la page puis ajax les paramètres de la base de données à mon application web? Est-ce le meilleur moyen ou y at-il un autre truc pour y parvenir que je ne connais pas?
Ne pas avoir js activé côté client n'est pas un problème.
ci-joint un code pour décrire ma mise en œuvre inital:
//get the friendly url as a parameter
$goto = explode('=',$_SERVER['QUERY_STRING']);
//$goto[1] = SomethingHere-or-there
//build the friendly URL string
$forwardingURL = 'Location:http://'.$_SERVER['HTTP_HOST'].'/'.getForwardedURL($goto[1]);
//will be http://exmample.com/index.php?loc=London&type=2&priceCat=10-15
header($forwardingURL);
//function that returns the full url param string from the friendly url
function getForwardedURL($friendlyURL){
$friendlyURL = mysql_escape_string($friendlyURL);
$query = "
SELECT url
FROM FriendlyURLmapping
WHERE friendly_url = \"$friendlyURL\"";
$resultP = mysql_query($query)
//the full parametised URL will be in $row
$row = mysql_fetch_array($resultP, MYSQL_ASSOC);
return $row["url"];
}
Vous pouvez également utiliser mod-rewrite pour exporter tout ce qui suit votre nom de domaine vers le $ _URL, alors vous pouvez simplement l'exploser par les barres obliques et analyser chaque partie avec PHP. – Breakthrough
Je suis d'accord, la pratique courante consiste à intégrer dans l'URL les paramètres. Cependant, l'exigence est de construire un mappage de paramètres non-direct. Raison étant que le nombre de paramètres pourrait changer sinon je pourrais supposer un mappage d'URL de: example.com/London/2/10-15 à example.com/index.php?loc=London&type=2&priceCat=10- 15 – thiswayup
@Joe: où stockez-vous vos mappages de paramètres? La dernière partie de ma réponse devrait vous aider, tout ce que vous avez à faire est de mettre '/ something-here' pour mapper' index.php? Param = something-here' puis utilisez ce script PHP pour afficher les informations nécessaires. – DisgruntledGoat