Question aux experts URL-RW

  • Auteur de la discussion Auteur de la discussion HawkEye
  • Date de début Date de début
WRInaute accro
Voilà, j'ai compris +/- le système, mais je suis face à un mur...

Le problème:

J'ai plusieurs pages dont l'url est sous la forme suivante (1):

-http://www.example.com/repertoire/mot%20mot%20mot.html

Via la règle RewriteRule ^repertoire/(.*).html$ index.php?mots=$1 [L], j'arrivais à exploiter le contenu de "mot%20mot%20mot%20" (puisque $mots = "mot mot mot")

Bref... Je me suis libéré des %20, et ces urls sont à présent sous la forme (2):

-http://www.example.com/repertoire/mot-mot-mot.html

-> via $mots = eregi_replace("-"," ",$mots) j'ai ce que je veux.

Mais...

Je voudrais que lorsque l'url (1) est tapée, ou cliquée sur un site qui la réfère, le visiteur soit redirigé en 301 vers la nouvelle page (2).

J'essaye les règles suivantes, sans succès:

RedirectPermanent ^repertoire/(.*)%20(.*)%20(.*).html$ repertoire/$1-$2-$3.html [L]

RewriteRule ^repertoire/(.*)%20(.*)%20(.*).html$ repertoire/$1-$2-$3.html [L]

RewriteRule ^repertoire/(.*)%20(.*)%20(.*).html$ repertoire/$1-$2-$3.html [R=301]

... y'a t'il un spécialiste dans la salle ???

Merci d'avance :D
 
WRInaute passionné
Essaye ça pour voir ?!
Code:
RewriteEngine on
RewriteRule ^repertoire/(.*)%20(.*)%20(.*).html$ repertoire/$1-$2-$3.html [R=301,L]
RewriteRule ^repertoire/(.*).html index.php?mots=$1
 
WRInaute accro
Merci Rottman pour ton aide à presque 1h du mat' ;)

avec ce que tu proposes, il continue d'afficher l'URL avec les %20 :(

En fait si ça se trouve, c'est normal...

Ce que je voudrais c'est que la page se recharge, un peu à la manière d'un redirect 301 par le header, et que la page affichée après redirect soit la page mot-mot-mot.html

(je sais pas si je suis clair là... :wink: )

Pour te dire, j'ai même essayé ça:

.htaccess :

Code:
^rewriterule ^repertoire/(.*)%20(.*)%20(.*).html$ redirect_301.php?redirect=$1-$2-$3
redirect_301.php :

Code:
<? 
$redirect = eregi_replace(" ","-",$redirect);
    header ("HTTP/1.1 301 Moved Permanently", false, 301);
    header ("Location: http://www.example.com/repertoire/".$redirect ."html"); 
	exit();
?>

rien n'y fait...
 
WRInaute passionné
Et ça ?

Code:
RedirectPermanent ^repertoire/(.*)%20(.*)%20(.*).html$ repertoire/$1-$2-$3.html
RewriteEngine on
RewriteRule ^repertoire/(.*).html index.php?mots=$1


là si ça ne marche pas c'est vraiment bizarre :?
 
WRInaute passionné
Code:
RewriteRule ^repertoire/(.*)\s(.*)\s(.*)\.html$ repertoire/$1-$2-$3.html [L,R=301]
:roll:
 
WRInaute accro
ah waip... là ça fait quelquechose: Internal Server Error (500) :mrgreen:
(celle de rottman... je teste l'autre now)

NB: vous postez vachement vite pour l'heure qu'il est...

Je m'arrache les cheveux...
 
WRInaute accro
bon... je vais aller me coucher... j'en peux plus...

le premier qui trouve gagne... euh... chépa encore quoi mais il le gagne, promis :mrgreen:

merci jeroen !
merci rottman !
 
WRInaute passionné
Le plus simple à faire et qui marcherait 100% sur c'est de seulement mettre dans ton htaccess :

Code:
RewriteEngine on
^repertoire/(.*).html$ index.php?mots=$1

et dans ta page index.php :

Code:
<?php 
if(eregi(" ",$_GET["mots"]))
{
$url_redirect = "repertoire/".eregi_replace(" ","-",$_GET["mots"]).".html";
header("HTTP/1.1 301 Moved Permanently", false, 301);
header("Location: $url_redirect");
}
else
{


.....reste de ta page.....

}
?>





:P
 
WRInaute accro
Hmm ça m'a l'air sympa ça...

Si j'intérpète correctement, tu veux vérifier si la variable $mots contient un espace, et si c'est le cas faire une 301 par le header vers /repertoire/mots.html ou les espace dans $mots sont remplacés par des tirets ?

On va voir ce que ça donne ;)
 
WRInaute accro
rottman,

t'as le droit de te lever à midi ;)

Ca fonctionne, j'ai juste du corriger

Ca: $url_redirect = "repertoire/".eregi_replace(" ","-",$_GET["mots"]).".html";

par ça: $url_redirect = "http://www.example.com/repertoire/".eregi_replace(" ","-",$_GET["mots"]).".html";

(sinon je tombais dans repertoire/repertoire/)

Merci B-E-A-U-C-O-U-P !
 
WRInaute passionné
Bon, j'ai un peu de retard mais je me lève... :wink:
Je crois que j'ai un peu moins "usine à gaz" :
Code:
RewriteRule ^repertoire/(.*)[[:space:]](.*)[[:space:]](.*)\.html$ repertoire/$1-$2-$3.html [L,R=301]
 
WRInaute passionné
Oups j'suis le dernier debout :oops:


Si j'intérpète correctement, tu veux vérifier si la variable $mots contient un espace, et si c'est le cas faire une 301 par le header vers /repertoire/mots.html ou les espace dans $mots sont remplacés par des tirets ?

C'est bien ça ;)


Merci B-E-A-U-C-O-U-P !
De rien 8)
 
WRInaute passionné
jeroen a dit:
Bon, j'ai un peu de retard mais je me lève... :wink:
Je crois que j'ai un peu moins "usine à gaz" :
Code:
RewriteRule ^repertoire/(.*)[[:space:]](.*)[[:space:]](.*)\.html$ repertoire/$1-$2-$3.html [L,R=301]


Ca va etre la galère si y'a 4, 5, 6 ou 1000 mots séparés par des espaces :lol:
 

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