Lien URL Rewriting

  • Auteur de la discussion Auteur de la discussion Stegue
  • Date de début Date de début
Nouveau WRInaute
Bonjour,

Pour un meilleur référencement, je voudrais utiliser les URL Rewriting.
Mes tests fonctionnent mais il y a quelque chose qui m'échappe.

Donc plutôt que de lire ça:
.../res_aut_cel.php?auteur=Audiard

je lis ça:
.../michel_audiard.html

Trés bien mais comment mettre ces liens à la place des liens en php avec variable ? :?
Comme celui-ci:
Code:
res_aut_cel.php?auteur=<?php echo $nom ; ?>



Merci.
 
WRInaute discret
hello

ça demande un peu de programmation, en effet, puisqu'il faut transformer ta variable $nom en url valide que ton .htaccess interpréterait

tes liens seraient un truc comme

Code:
<?php en_url($nom); ?>

reste à coder la fonction en_url() qui peut être tout simplement un truc comme
Code:
function en_url($nom) {
return str_replace(" ","_",$nom).".html";
}

bien entendu il faut aussi traiter les autres caractères (dont les lettres avec accent), c'est un ébauche, à toi de compléter
 
WRInaute impliqué
pour faire de l'url rewriting, il n'y a pas d'autre manière, il faut bien construire l'url qui correspond à ce que l'on a défini dans le .htaccess
 
Nouveau WRInaute
Bonjour,

J'ai avancé mais je me retrouve avec d'autres questions:

Avec ça dans le .htaccess:

RewriteRule ^[a-zA-Z0-9]+-([a-zA-Z0-9]+)\.html$ auteur-citation.php?auteur=$1 [L]

Et ça en lien:

<a href="/<?= $bdd['prenom'].'-'.$nom; ?>.html"><?= $bdd['prenom'].' '.$nom; ?></a>

La réécriture d'URL marche bien.

Mais en ajoutant ça au .htaccess pour une 2e réécriture:

RewriteRule ^.*-([0-9]+)(-?.*)\.html$ citation.php?citation=$1

Et ça en lien:

<a title="Citation" href="/<?= str_replace(' ', '-', $row['citation']); ?>.html"><?= $row['citation']; ?></a>

J'arrive sur une page d'erreur:

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 8 in

/home/*********/www/
auteur-citation.php on line 107 -

Et on voit bien (en rouge) la page qui ne correspond pas à celle de la seconde ligne du .htaccess (en vert) mais à celle de la 1ere ligne ( en rose)

Comment éviter ça ?

La, ce sont les réécritures dans le .htaccess.

RewriteRule ^.*-(.*)\.html$ citation.php?citation=$1
RewriteRule ^.*-([0-9]+)(-?.*)\.html$ auteur-citation.php?auteur= [QSA]
RewriteRule ^.*-(.*)\.html$ citation-con.php?page= [QSA]


Merci.
 
Discussions similaires
Haut