Url rewriting

Répondre
shinzo94
le 10/08/2009 à 12:37
shinzo94
Bonjour

Voilà je me met à l'URL REWRITING et j'ai chercher pas mal de tuto et j'avoue que je n'y comprend pas tout.

Alors au début j'avais une page dynamic appelé go.php qui évidement ne changeait jamais d'adresse => On pouvait cliquer sur n'importe quel catalogue c'était toujours go.php mais sa chargeait bien les catalogue (merci HEADER).

Donc par la suite j'ai fait un window.location qui prenait le nom du catalogue + id de l'image (il marche) et j'obtiens donc cela :

var Chaine = String(window.location);
var sous_chaine = "#?Client=";
var Resultat = Chaine.indexOf(sous_chaine);
var Resultat2 = Chaine.substring(0,Resultat);
window.location = Resultat2 + "#?Client=" + document.getElementById("title" ).value + "&id=" + document.getElementById("MediaID" ).value;

qui me donne => monsite.com... [...] ss&id=1563

Par la suite j'ai tenté de faire un .htaccess qui me donne cela :

RewriteEngine on

#--------------------------------------------------
# Règles de réécriture d'URL :
#--------------------------------------------------
RewriteBase /verif/
# Article sans numéro de page :
#RewriteRule ^#/go-(.+)-([0-9]+)\.html$ ^go.php?Catalogue=$1&Photo=$2# [L]
RewriteRule ^go-(.+)-([0-9]+)\.html$ go.php#?Client=$1#&id=$2/ [L]

qui me permet de rentrer directement l'adresse comme ça

site.fr... Moss-1563.html

Donc si je la rentre comme ça elle marche mais pas super.

1) toujorus le window location à la suite => site.fr... [...] ss&id=1563
2)L'url ne change pas du tout => site.fr... [...] ue&id=1636
3)Donc quand on change les valeur directement dans l'url que ce soit pour le window.location ou avec l'html il ne se passe rien
4)On ne peux pas sauvegarder l'URL sa ne ramène pas sur l'image mais le catalogue pas de retour en arrière.
5) Je ne sais pas comment l'utiliser sans le window.location
6) si j'enleve le # au debut sa part en boucle infinie/

Donc si vous pouviez m'apporter quelques explications sur comment l'utiliser je vous en serrais reconnaissant parceque je galère depuis pas mal de jours

Merci
moogli
le 10/08/2009 à 20:27
moogli
Yop,

deja le # c'est le symbole pour les commentaires ;)

.+ c'est un peut trop "laxiste" vu qu'il va aussi prendre Moss-1563 dans ce motif.

ensuite il ne faut pas mélanger plusieurs choses pour la gestion des url sinon ça va se mordre la queue ;)

Pour ce qui est de l'image je ne vois pas de quoi tu parles. Tu a une "map" suivant l'endroit où tu clique tu a un catalogue différent ?

pour résoudre ton pb tu peut par exemple faire une url du genre site.fr/catalogue-id-nom.html

RewriteEngine on
Rewriterule ^catalogue/([0-9]+)\-(.+)\.html$ /go.php?Catalague=$2&Photo=$1 [L]


Bon après c'est pas forcément super adapté à ce que tu veut faire parce que j'ai pas d'exemple d'url concret pour le rewrite mais le principe est la ;)

bon courage

@+
Il en faut peu pour être heureux !!!!!
shinzo94
le 11/08/2009 à 10:33
shinzo94
Bonjour

Tout d'abord merci de ta réponse.

En fait la personne qui à créer le site l'a fait en full ajax, ce qui veux dire dynamique = non rechargement des pages....
Donc c'est pour cela que je trouve que l'url rewriting en fait ne me sert pas à grand chose vu que ma page ne serra jamais recharger.

Ensuite l'autre soucis c'est que vu que c'est en full ajax il n'y a jamais l'URL qui change j'avais toujours monsite.fr/go.php.
et c'est pour cela que j'ai fait du windows.location


pour les images en fait le site sur la gauche il y a une série de nom de catalogue qui lorsqu'on clique dessus va afficher sur la droite les images du catalogue.

Là où j'en suis à présent j'essaye de tout gérer par rapport au window.location.search et j'y arrive presque sauf que évidement j'ai une condition qui agit pour deux choses différentes que je n'arrive pas à modifier.

Je poste mon code pour mieux comprendre
//Je recupère le lien
var Chaine = String(window.location);


var test = 0;
//Fonction qui me coup mon URL pour récupérer les variables
function PrmUrl()
{
var prm = new Array();
var tmp =
unescape(window.location.search).substr(1).split("
&");
var inter;
for ( i=0; i<tmp.length; i++)
{
inter=tmp[i].indexOf("=");
if ( inter>=0 )
{

prm[tmp[i].substr(0,inter)]=tmp[i].substr(inter+1)

}
else {
prm[tmp[i]]="";
}
}
return prm;
}

Si il y a bien une URL
if ( window.location.search )
{
var $_GET=PrmUrl();
var tmp= "-----------------------\r\n"+
"exemple par leur noms :\r\n"+
"-----------------------\r\n"+
"\tp1 = "+$_GET["Client"]+"\r\n"+
"\tp2 = "+$_GET["id"]+"\r\n"+
"------\r\n"+
"tous :\r\n"+
"------\r\n";
for ( var n in $_GET )
{
tmp+="\t"+n+" = "+$_GET[n]+"\r\n";
}
Je passe ma variable Test à 1 pour éviter la boucle infinie voir plus bas

test = 1;
//alert ("client = " + $_GET["Client"]);

//Si je change de catalogue je vérifie que mon titre catalogue est le meme que celui que j'avais récupéré sinon je met mon test a 0

if( document.getElementById("title").value != $_GET["Client"]){
test = 0;
}
}

//Si test =0
if (test == 0)
{
//Ici je vais découpé tout mon code pour juste avoir www.monsite/go.php et pouvoir rajouté par la suite mes variables.


var sous_chaine = "?Client=";
var Resultat = Chaine.indexOf(sous_chaine);
var Resultat2 = Chaine.substring(0,Resultat);

test = 0;
//window.location.href= Resultat2 + "?Client=" + document.getElementById("title").value;
window.location.href= Resultat2 + "?Client=" + document.getElementById("title").value + "&id=" + document.getElementById("MediaID").value;
}


Donc voilà le problème c'est qu'a cause de mon "if" je ne peux pas dire quand je change directement l'URL et bien je ne le dis jamais parceque je ne peux pas faire la différence à cause du if( document.getElementById("title").value != $_GET["Client"])
Donc j'aimerais faire la différence entre lorsque je clique sur un autre catalogue => titre different du $Get et lorsque j'ecris directement sur l'URL le nouveau titre même condition qu'avant sauf qu'au lieu de retourner sur mon window.location je devrais dire que document.getElementById("title").value = $_GET["Client"]

Je commence a detester celui qui à programmer ça avant moi => Full ajax youpi....
moogli
le 11/08/2009 à 11:59
moogli
la je t'avoue que je ne peut t'aider c'est un peu trop compliqué pour moi.

sur le principe je pense que tu pourrais garder dans une variable le nom de "l'ancien" titre et comparer avec le titre actuel, si c'est pas pareil tu peut changer d'url.

Peut être peut tu simplement ajouter un lien dans la page avec le lien direct pour qu'il puisse être mis en favoris ?

Courage, il y a surement quelqu'un de plus doué que moi qui va t'aider ;)

@+
Il en faut peu pour être heureux !!!!!
shinzo94
le 11/08/2009 à 13:10
shinzo94
^^ t'en fait pas même mon maitre de stage galère.

J'ai essayé mais le problème c'est que avec windows.location là ma page est rechargé = supprime les variable = donc la variable ou j'ai stocké mon historique.

Na mais j'ai abandonné faudrait refaire le site la j'attaque le bouton share ^^
LupusMic
le 12/08/2009 à 04:51
LupusMic
Bordel le BBcode !

Si ton maître de stage galère aussi, il ne doit pas être très compétant.

En effet, le fragment de l'URL (la partie après le #), n'est pas transmis au serveur distant. C'est uniquement une information locale.

Ceci implique que tu ne peux rien en faire dans PHP, puisqu'il ne l'a pas reçu.

Et le « full ajax », quand c'est bien fait, c'est bien ©
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours