Pour faire simple !!

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

Je me perd dans toute ces façons de faire de l'URL rewriting.

J'ai un site qui aura des URL du type : www.cinesia.net/film.php?id_film=4&lang=fr

J'aimerai savoir si ce que je pense qu'il faut faire est juste :

1 - créer un fichier .htaccess dans lequel je mets mes régles :

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

2 - mettre ce fichier .htaccess dans le répertoire à la racine de mot site.

3 - modifier le code php de mes pages pour qu'il transforme les URL rewriter en URL php normal (: film.php?id_film=4&lang=fr)
 
WRInaute passionné
Non, tu n'as rien compris.
:)

la réécriture d'URL permet de faire la chose suivante :
tu laisse ton code PHP pareil pour le traitement des infos (donc film.php marche comme il l'a toujours fait, avec les paramètres dans l'URL : film.php?id_film=4&lang=fr

MAIS
tu fais tes liens en simulant du Html statique : film-1-fr.html

Et ta règle de réécriture, c'est elle qui va faire que ^film-([0-9]+)-(.*)\.html va se transformer, pour ton serveur, en film.php?id_film=$1&lang=$2

Dans tout ce processus, nulle trace de index-truc ou index.php qui ne servent à rien.

Cordialement,
 
Nouveau WRInaute
Ah c'est l'inverse donc ! : les régles dans le fichier .htaccess ne font que de changer POUR MON SERVEUR les URL en statique simulé vers des URL avec variables pour que mon code en php puisse fonctionner. Mais dans la bar d'adresse ce sera l'URL statique qui sera afficher ?
 
Nouveau WRInaute
Ah parce que le drapeau [L] fait que ça affiche l'URL en statique dans la bar d'adresse ??

Donc si mon fichier .htacess est comme ça c'est bon ? :

Code:
RewriteEngine on
RewriteRule index(-.+)-([^-]+)-([^-&]*)([^-]*)\.html index$1&$2=$3$4\.html [N]
RewriteRule index-([^-]+)-([^-]*)(.*)\.html index.php?$1=$2$3 [L]
 
WRInaute passionné
Je n'aime pas donner des conseils et ne pas être lu.
J'ai écrit 2 (deux) messages dans ce sujet. Il serait vraiment sympathique de faire l'effort de les lire en entier et essayer de les comprendre ;)
 
Nouveau WRInaute
Oui désolé, en effet mon dernier poste est inutile.
Si jamais ça marche donc c'est que j'ai compris :)

Le truc c'est qu'il fallait que je fasse la fonction inverse dans mon code php pour créer des liens correctes donc je voulais d'abord bien comprendre les régles.

Si jamais voulais ma fonction inverse :

Code:
function rewriteurl($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";
}
 

➡️ 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