Aller au contenu

Php & url rewriting


Lentreprenaute

Sujets conseillés

Bonjour,

j'aimerai faire un url rewriting selon l'exemple ci-dessous qui fonctionne pour une variable: index.php?cat=XX me renvoie nom_rubrique-x.html mais je veux pour plusieurs variables :

index.php?cat=2&sort=nom&by=DESC&p=1

pouvez vous m'aider à ressortir ce resultat.

nom_rubrique-2-nom-desc-2.html

ci dessous les codes d'origines qui provienne de l'annuaire netref

htaccess

RewriteEngine on
RewriteRule ^([^-.]+)-([0-9]+)\.html$ index.php?cat=$2 [QSA,L]

code fonction php

...

function url_rewrite($cat_nom,$cat_id,$p){ 
  global $url_rewriting;
  if (!$url_rewriting) return "?cat=$cat_id";// mod Non URL Rewriting
  // si URL Rewriting
  $cat_nom=trans_nom_fichier(substr($cat_nom,0,30));
  $cat_nom=urlencode($cat_nom);
  $cat_nom=str_replace("+-/.",
                       "_\0\0\0",$cat_nom);
  return $cat_nom."-".$cat_id.".html";
}
...

appel de la fonction

....

$url_cat=url_rewrite($nom,$cat,0);// lit l"URL Rewriting
 echo "<a class='lien_2' href='$url_cat'>
...

Lien vers le commentaire
Partager sur d’autres sites

:blink: re moi, :blink:

sinon je voudrais reecrire toutes mes pages de ce type :

p_new.php?p=x

p_parten.php?p=x

p_top.php?p=x

pour le moment j'ai ca dans le htaccess, seul pb c'est que ca prend la main sur tout, comment je peux ecrire ca pour que cela me reecrive toutes mes pages ci-dessus.

a partir du moment ou j'ai une structure identique nompage.php?var=1, je ne sais pas comment faire pour reecrire les pages.

un grand merci a celui qui me depatouillera :)

RewriteRule ^([^-.]+)-([0-9]+)\.html$ p_new.php?p=$2 [QSA,L]

Lien vers le commentaire
Partager sur d’autres sites

Lentreprenaute,

Je pense que tu poses le problème à l'envers et que tu veux réécrire

nom_rubrique-2-nom-desc-1.html

en

index.php?cat=2&sort=nom&by=DESC&p=1

et non l'inverse... non ?

En admettant que "nom_rubrique" soit une constante dans tes URLs au format html, la règle serait alors:

RewriteRule nom_rubrique-([0-9]+)-([a-z]+)-([a-z]+)-([0-9]+)\.html index.php?cat=$1&sort=$2&by=$3&p=$4 [NC,L]

Dan

Lien vers le commentaire
Partager sur d’autres sites

Et pour ton autre problème:

p_new.php?p=x

p_parten.php?p=x

p_top.php?p=x

RewriteRule p_(new|parten|top)-([0-9]+)\.html p_$1.php?p=$2

réécrirait p_parten-12.html en p_parten.php?p=12 ... c'est ce que tu veux ?

Dan

Lien vers le commentaire
Partager sur d’autres sites

bonjour Dan

je veux transformer mes url

p_new.php?var=x

p_parten.php?var=x

p_best.php?var=x

en

new-x.html

parten-x.html

best-x.html

j'utilise cette ligne* pour transformer , mon probleme est que je n'arrive pas

a transformer les autres pages (parten, best,..) et plus generalement toute les pages qui ont une structure identique. car j'a itoujour cette ligne qui prend le dessus.

*

RewriteRule ^([^-.]+)-([0-9]+)\.html$ p_new.php?p=$2 [QSA,L]

Modifié par Lentreprenaute
Lien vers le commentaire
Partager sur d’autres sites

Supprimes cette ligne et ajoutes la suivante:

RewriteRule ([a-z]+)-([0-9a-z]+)\.html p_$1\.php?var=$2 [L]

Réécrira toute url commençant par un ensemble(1) de lettres, suivi d'un tiret, suivi d'un ensemble(2) de lettres ou chiffres en

p_ensemble1.php?var=ensemble2

Lien vers le commentaire
Partager sur d’autres sites

Heu, Dan, je crois que la demande est inverse, à savoir recopier l'url http://www.monsiteamoiquejai.php?param=xx EN

http://www.monsiteamoiquejai.html

Du moins, c'est ce que j'ai cru comprendre... :rolleyes:

Cela étant, la méthode de transformation m'intéresse, puisque je souhaite aussi faire cela.

xpatval

ps: Quoique je me pose aussi peut-être le problème à l'envers.

Le but étant de faire apparaitre sur la barre d'adresse l'url en .html, tout en conservant le processus de passage de paramètres...(www.toto.php?param=xxx).

je ma bien fait compris ? :yoot:

Modifié par xpatval
Lien vers le commentaire
Partager sur d’autres sites

ps: Quoique je me pose aussi peut-être le problème à l'envers.

Le but étant de faire apparaitre sur la barre d'adresse l'url en .html, tout en conservant le processus de passage de paramètres...(www.toto.php?param=xxx).

je ma bien fait compris ? :yoot:

Oui, tu poses le problème à l'envers.. j'ai d'ailleurs répondu en ce sens dans ton autre post ;)

Dan

Lien vers le commentaire
Partager sur d’autres sites

Guest azeitona

hummm, est-tu sur que le htaccess marche sur ton serveur ?

as-tu testé avant tout de faire une redirection pour verifier si ca marche bien ?

Modifié par azeitona
Lien vers le commentaire
Partager sur d’autres sites

re bonjour,

bon je progresse a petit pas et j'ai un pb avec r=301!

RewriteRule ^([^-.]+)-([0-9]+)\.htm$ index.php?site=$2 [QSA,L]  

reecrit : index.php?site=XX en nomvariable*-XX.htm

nomvariable n'est pas fixe, il peut prendre des valeurs différentes exemple : (nom_rubrique, page, page_rubrique, nom_cat,...)

la ou ca coince : je n'arrive pas a rediriger :

si je tente R=301 pour envoyer les anciennes pages indexées (index.php?site=XX)par Google sur les nouvelles reecrites (en nomvariable-XX.htm) avec le code suivant

RewriteRule ^([^-.]+)-([0-9]+)\.htm$ index.php?site=$2 [NC,QSA,R=301,L]  

cela me retourne cette erreur, lorsque j'appelle une page nomvariable-XX.htm et ne parlons pas de la redirection d'une page "index.php?site=XX", il ne se passe rien

 /home/web/messites/monsite/index.php was not found on this server.

cela revient a m'afficher le repertoire ou est stocké mon site sur mon serveur.

une idée,

Florent

ci-dessous mon htaccess complet

php_flag register_globals on 
RewriteEngine on
RewriteRule ^([^-.]+)-([0-9]+)\.htm$ index.php?site=$2 [QSA,L]

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...