CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Url rewriting

Shinzo45
Shinzo45
Niveau 1
10 août 2009 à 11:09:54

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 => http://monsite.com/go.php#?Client= [...] ss&id=1563

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

RewriteEngine on

  1. -------------------------------------------------

-

  1. Règles de réécriture d'URL :
  1. -------------------------------------------------

-
RewriteBase /verif/

  1. Article sans numéro de page :
  2. 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

http://site.fr/verif/go-Kate Moss-1563.html

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

1) toujorus le window location à la suite => http://site.fr/verif/go-Kate%20Mos [...] ss&id=1563
2)L'url ne change pas du tout => http://site.fr/verif/go-Kate%20Mos [...] 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 les # sa part en boucle infinie

Donc si vous pouviez m'apporter quelques explications sur comment l'utiliser je vous en serrais reconnaissant.

Merci

deepblue
deepblue
Niveau 16
10 août 2009 à 11:14:05

Les ancres (tout ce qu'il y a après le #), sont gérées par le client, le serveur ne les verra jamais. Tu ne peux pas faire de rewrite dessus :ok:

Shinzo45
Shinzo45
Niveau 1
10 août 2009 à 11:19:43

A daccord déjà merci pour cette information mais ça veux dire que si je fait un windows.location je serrais obligé de mettre un # sous peine de partir en boucle infinie?

deepblue
deepblue
Niveau 16
10 août 2009 à 13:45:43

Pourquoi n'utilises-tu pas des variables passées dans l'url ?
go.php?catalogue=truc&variable=valeur

Qui serait d'ailleurs réécrit comme tu veux ensuite.

Shinzo45
Shinzo45
Niveau 1
10 août 2009 à 15:12:49

Alors c'est maintenant ce que j'essaye de faire.

Avec un window.location.search et une autre fonction qui va me permettre de prendre toute mes variables => Client et ID.

Voilà donc avec un $_GET["Client"] je recupère mon client donc là dessus ouf j'ai avancé un peu.

Sa voudrais dire que URL rewriting ne me sers pas?.

J'ai réglé le problème de la boucle infinie en lui disant de ne pas me la réécrire à chaque fois si mon client ou id n'avait pas changé....
Mais voilà encore un autre problème vient à moi, et oui toujours des problèmes, comment savoir quand c'est nous qui marquons un nouvelle id directement dans l'URL?

Car en fait je lui dit :

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

Donc si le titre donné est différent de celui sauvegardé dans l'url d'avant

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

Tu me réécris l'URL.

Alors comment lui dire bon celle de l'URL est différentes de celle sauvegardé => $_GET["Client"], mais c'est l'utilisateur qui l'a écrite pour allez à tel images donc il ne faudrait plus prendre
document.getElementById("title").value
mais le nouveau client et lui dire

document.getElementById("title").value = $_GET["Client"];

C'est ça qui est dur car vu qu'il ne reload jamais la page...Alors est ce que si je refait un windows.location.search ou un window.location.href sa me prend l'url que j'ai retaper?

Je sais c'est dur a comprendre....dsl

Shinzo45
Shinzo45
Niveau 1
10 août 2009 à 15:24:35

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;
}

deepblue
deepblue
Niveau 16
10 août 2009 à 18:15:34

Pour tout avouer, je ne sais pas trop pourquoi tu veux faire ça.
Pourrais-tu expliquer ce que ton application fait au final en mettant de coté les problème. (en gros, si tu dis que tu fais un frigo, explique que c'est garder au frais les aliments)

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment