URL rewriting

Bonjour,

je suis en train de mettre en place l’url revriting sur mon site, j’ai compris le principe et ça marche seulement j’aimerais affiner tous ça mais je ne sais pas si ce que je veu faire est possible :heink: :

Je m’explique, j’ai mon url http://www.monsite.com/index.php?fiche=1[/url] qui devient [url=http://www.monsite.com/index.php-detail-fiche-numero-1.html]http://www.monsite.com/index.php-detail-fiche-numero-1.html jusque la tout va bien :smiley:

Je sais que la fiche 1 appartient a la categorie toto en faisant une requête SQL, ma question est la suivante est il possible de faire une url de ce style :
http://www.monsite.com/index.php-toto-fiche-1.html

rien qu’en utilisant l’url revriting sans avoir a changer mon url d’origine (en rajoutant cette variable toto) ?

Merci d’avance :jap:

pas sur de bien comprendre ce que tu veux :neutre: …

la seule valeur intéressante à récupérer dans ton adresse est l’ID de la fiche … tout le reste c’est juste du texte pour les moteurs de recherche … tu peux donc mettre ce que tu veux …

http://www.monsite.com/clubic-cay-le-bien-…to-fiche-1.html

après par contre, tu va ptet te prendre un peu la tête pour récupérer l’id … mais sinon, c’est tout à fait faisable :oui:

Oui, tu devrais même virer index.php, inspire toi de l’url rewriting clubic:
http://www.clubic.com/forum/url-rewriting-t390194.html
et aussi de celui des articles, mieux fait.

donc essaye de faire des urls
http://www.monsite.com/toto-1.html

en matchant un truc du style ([^/])-([0-9]).html http://www.monsite.com/index.php?fiche=$2
ton toto pourra même contenir des tirets, il matchera le dernier tiret pour séparer N° et nom de fichier, mais par les caractère "/" ce qui te permet aussi des mettre des pages html non redirigées dans les sous-répertoires.

Bonjour et merci pour vos réponses :slight_smile:

En fait ma question portait sur le fait que toto qui est le type de fiche n’est pas d’origine dans l’url et je me demandais si le fichier .htaccess était “capable” de faire une requête sql pour rajouter quelquechose dans l’url ?

Au vu de vos réponses et de mes recherches je pense qu’il va falloir que je change directement l’url d’origine dans le fichier php c’est bien ça ?

Encore merci :slight_smile:

Oui, le module d’url rewriting d’apache est pour les url entrantes, pour les urls sortantes le plus simple est de la changer dans les pages, il doit bien exister des moteurs qui retransforment une page PHP générée, mais d’une part, il ne pourra pas faire de requête pour retrouver le titre “toto”, et d’autre part, un tel processus d’analyse de page risque d’être plus ou moins fiable, et risque de ralentir le serveur.
Donc pour faire simple, oui à ta question :wink:

si t’as vraiment beaucoup de liens à changer…
ça au tout début

ob_start();
function rewrite($r)

{

$in = array(

"'(?<!/)index.php\?fiche=([0-9]*)&dir=$dir'",

 );

$out = array(

"fiche-\\1-\\2.htm",

);

$r = preg_replace($in, $out, $r);

return $r;

}

… et ça à la fin

$contents = ob_get_contents();

ob_end_clean();

echo rewrite($contents);