Exemple rewriting

Nouveau WRInaute
Bonjour,
j'ai installé un URL rewriting avec .htaccess
le fichier .htaccess est dans le repertoire /bricbroc/
voici le code

RewriteEngine on
RewriteRule (.*)(-.+)-([^-]+)-([^-&]*)([^-]*)\.html /bricbroc/$1$2&$3=$4$5\.html [N]
RewriteRule (.*)-([^-]+)-([^-]*)(.*)\.html /bricbroc/$1.php?$2=$3$4 [L]
RewriteRule ^(.*).html /bricbroc/$1.php [L]



J'utilise une fonction de convertion de mes url

function lienurlrewriting($url) {
if (eregi("(.*).php(.*)",$url,$regs)) {
$monurl = $regs[1];
$geturl = $regs[2];
while (eregi("(.*)(\?|&)([^=]+)=([^=]*)(.*)",$geturl,$regs)) {
$geturl = $regs[1]."-".$regs[3]."-".$regs[4].$regs[5];
}
$url = $monurl.$geturl;
} elseif(eregi("(.*).php",$url,$regs)) {
$url = $regs[1];
}
return $url.".html";
}




Mais probleme :twisted:

l'url

http://www.bricbroc.net/bricbroc/liste-cat-4-categorie-3-t1-Art-t2-Gravures.html

ne marche pas!
url de base : http://www.bricbroc.net/bricbroc/liste.php?cat=4&categorie=3&t1=Art&t2=Gravures

Si qqun pouvait me dire où j'ai merd....

Merci d'avance
 
WRInaute passionné
Salut, ne le prends pas mal, mais c'est pas logique, ça a pas l'air structuré pour un sou tes deux règles.

Tes URL ont 4 paramètres et il n'y en a qu'un dans ta réécriture (un seul signe "="). Rien que pour ça, ça ne peut pas marcher.
 
Nouveau WRInaute
J'ai beau le tourner dans tous les sens, sa ne marche qu'avec les url ayant qu'un seul parametre.

qqun peut m'expliquer... :oops:


merci
 
Nouveau WRInaute
que pensez vous de ca?


RewriteEngine on
RewriteRule (.*)(-.+)-([^-]+)-([^-&]*)([^-]*)\.html /bricbroc/$1$2&$3=$4$5\.html [N]
RewriteRule (.*)-([^-]+)-([^-]*)(.*)\.html /bricbroc/$1.php?$2=$3$4&$5=$6$7&$8=$9$10&$11=$12$13 [L]
RewriteRule ^(.*).html /bricbroc/$1.php [L]
 
WRInaute passionné
Que c'est très moche.
Je parie que tu n'as qu'un seul PHP (liste.php) ciblé par ta réécriture, non ?
et que ses arguments sont toujours cat, categorie, t1 et t2 ?
alors pourquoi tu ne peux pas faire tes règles "comme tout le monde" ? jette un oeil aux milliers d'exemples disponibles sur WRI et sur internet :wink:
 
Nouveau WRInaute
lol,
merci en tous cas de me répondre.
Je reconnais que c trés moche.
Ma égle est bonne pourtant : [N] devrait faire la boucle de
réécriture de mon url .html....

quoi qu'il en soit sa marche pour une seul variable
je vais essayé de m'arenger avec mon code.

cependant a quoi bon faire ça si je ne peus passer plus de deux variables(google référence bien une variable, non?)

Et puis le fichier "liste.php" n'est pas le seul siblé: apres lui
il y a "detail.php" qui détient le recore en déclinaison ;-)

Merci encore
 
WRInaute passionné
Dans ce cas, avec une règle par fichier et par nombre de paramètres, tu y arriveras.
Une règle pour liste.php avec 4 param
une autre pour liste.php avec 3 param

une pour detail.php avec 6 param
un autre pour 5
une autre pour 4

Ca sera plus propre, et ça, au moins, ça marche ;)
 
WRInaute discret
avec grand plaisir :D

d'ailleurs, faudrait que je m'occupe de mes regles a moi....c'est un de ces bordel dans mon fichier :lol: .
 
Nouveau WRInaute
Juste pour dire que j'ai améioré le script de convertion de mes url a cause des accents :
j' ai rajouté > $url = strtr($url, "éèêëàâîï", "eeeeaaii");

sa donne :

function lienurlrewriting($url) {
if (eregi("(.*).php(.*)",$url,$regs)) {
$monurl = $regs[1];
$geturl = $regs[2];
while (eregi("(.*)(\?|&)([^=]+)=([^=]*)(.*)",$geturl,$regs)) {
$geturl = $regs[1]."-".$regs[3]."-".$regs[4].$regs[5];
}
$url = $monurl.$geturl;
} elseif(eregi("(.*).php",$url,$regs)) {
$url = $regs[1];
}
$url = strtr($url, "éèêëàâîï", "eeeeaaii");
return $url.".html";
}
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut