Aller au contenu

redirection 301 rewriting


smile

Sujets conseillés

Salut,

voilà je teste une redirection 301 avec rewriting sur mon annuaire par htaccess, mais soit j'ai 404, soit 501

je souhaiterai modifier cet url :

http://www.annuaire-search.com/recherche.p...g=webmaster+hub

en

-http://www.annuaire-search.com/recherche-webmaster+hub.html

toutes mes tentatives se sont avérées infructueuses :unsure:

Un peu d'aide serait sympa :)

Lien vers le commentaire
Partager sur d’autres sites

personne pour me repondre ?

Salut Smile,

Tu sais qu'on est dimanche soir ? ;)

Qu'on se comprenne bien: tu veux créer dans ton annuaire des liens sous la forme:

http://www.annuaire-search.com/recherche-webmaster+hub.html

et il faut que cela appelle:

http://www.annuaire-search.com/recherche.php?query_string=webmaster+hub

C'est ça ?

Dans ce cas une seule règle:

RewriteEngine on
RewriteRule recherche-(.*)\.html recherche.php?query-string=$1 [L]

Si ce n'est pas ce que tu veux faire, essaies d'être plus explicite ;)

Lien vers le commentaire
Partager sur d’autres sites

Salut Dan,

pas tout à fait puisque je veux que les moteurs prennent compte mon rewriting par une redirection permanente 301.

là tu me proposes une reecriture, qui ne pose pas de problème, mais c'est d'allier les deux, rewriting et 301.

Lien vers le commentaire
Partager sur d’autres sites

:lol:

J'ai oublié le flag R=301 ;)

La règle devient donc:

RewriteEngine on
RewriteRule recherche-(.*)\.html http://www.domaine.tld/recherche.php?query-string=$1 [R=301,L]

Dan

Lien vers le commentaire
Partager sur d’autres sites

Qu'on se comprenne bien: tu veux créer dans ton annuaire des liens sous la forme:

http://www.annuaire-search.com/recherche-webmaster+hub.html

et il faut que cela appelle:

http://www.annuaire-search.com/recherche.php?query_string=webmaster+hub

C'est ça ?

C'est pour cette raison que je t'avais demandé avant... :(

Que veux-tu faire ? Une redirection 301 de la forme recherche.php vers la forme recherche....html ?

Si c'est pour faire le travail de Google, il suffit que tes liens non-réécrits ne soient plus utilisés pour qu'ils disparaissent de l'index...

Lien vers le commentaire
Partager sur d’autres sites

En fait, si je comprend bien, tu veux rediriger avec entête 301 l'URL

recherche.php?query_string=webmaster+hub

vers

recherche-webmaster+hub.html

Mais cette dernière URL sera réécrite, en quoi ? parce que si c'est réécrit en recherche.php?query_string=webmaster+hub on retourne à la case départ :(

Lien vers le commentaire
Partager sur d’autres sites

soyons clair :)

en effet je veux faire une redirection de

recherche.php?query_string=webmaster+hub

vers

recherche-webmaster+hub.html

en sachant que je dois reecrire query_string=webmaster+hub en recherche-webmaster+hub.html

Voilà, ca doit etre possible de le faire en donnant en effet un petit coup de pouce entre autre à google pour qu'il sache que ces urls sont remplacés par recherche-webmaster+hub.html

je sais que c'est faisable, donc je soumets le problème au hub et à toi Dan :)

Lien vers le commentaire
Partager sur d’autres sites

Jusque là j'ai compris ce que tu voulais faire, mais l'URL recherche-webmaster+hub.html va bien être réécrite vu que ce fichier n'existe pas ? Sous quelle forme ?

Lien vers le commentaire
Partager sur d’autres sites

là Dan tu compliques :)

voilà ce que j'ai ajouté :

RewriteCond %{QUERY_STRING} ^query_string=(.*)$ 
RewriteRule ^recherche1\.php$ http://www.annuaire-search.com/recherche1-%1.html? [L,R=301]

donc j'ai bien une redirection 301 en appelant cette page :

http://www.annuaire-search.com/recherche1....uery_string=hub

le problème c'est qu'elle est 404, je suis allé voir l'outils entetes http :

HTTP/1.1 301 Moved Permanently

Date: Mon, 13 Jun 2005 18:29:40 GMT

Server: Apache/1.3.31 (Unix) PHP/4.3.0

Location: http://www.annuaire-search.com/recherche1-hub.html

Connection: close

Content-Type: text/html; charset=iso-8859-1

Redirection vers :

URL: http://www.annuaire-search.com/recherche1-hub.html

HTTP/1.1 404 Not Found

Date: Mon, 13 Jun 2005 18:29:40 GMT

Server: Apache/1.3.31 (Unix) PHP/4.3.0

Connection: close

Content-Type: text/html; charset=iso-8859-1

parce que là il manque apparement une etape ...

Lien vers le commentaire
Partager sur d’autres sites

là Dan tu compliques :)

Ben non, c'est exactement ce que je te disais. :whistling:

Il faut rajouter une deuxième règle:

RewriteRule recherche1-(.*)\.html recherche.php?query-string=$1 [L]

(pour autant que le script qui affiche la recherche soit bien "recherche.php" :lol: )

Dan

Lien vers le commentaire
Partager sur d’autres sites

Recherche1 c'est un exemple ca sera bien recherche :)

mais là aussi ca marche pas avec la deuxième règle, j'ai une boucle infinie :gueule:

RewriteCond %{QUERY_STRING} ^query_string=(.*)$ 
RewriteRule ^recherche1\.php$ http://www.annuaire-search.com/recherche1-%1.html? [L,R=301]
RewriteRule recherche1-(.*)\.html recherche1.php?query_string=$1 [L]

Lien vers le commentaire
Partager sur d’autres sites

Recherche1 c'est un exemple ca sera bien recherche :)

mais là aussi ca marche pas avec la deuxième règle, j'ai une boucle infinie  :gueule:

RewriteCond %{QUERY_STRING} ^query_string=(.*)$ 
RewriteRule ^recherche1\.php$ http://www.annuaire-search.com/recherche1-%1.html? [L,R=301]
RewriteRule recherche1-(.*)\.html recherche1.php?query_string=$1 [L]

C'est CE QUE J'ESSAIE de te faire comprendre depuis le début !!!

La deuxième règle n'est pas la même que celle que je t'ai donnée plus haut :(

Dans ta deuxième règle, il faut mettre

RewriteRule recherche1-(.*)\.html recherche.php?query_string=$1 [L]

et non recherche1 :gueule:

Sinon tu auras automatiquement une boucle infinie !

Lien vers le commentaire
Partager sur d’autres sites

Ce qui faut c'est de ne pas appeler la meme page que la première règle, crois avoir pigé :)

petit récapitulatif :

RewriteRule recherche1-(.*)\.html recherche_diff.php?query_string=$1 [L]
RewriteCond %{QUERY_STRING} ^query_string=(.*)$
RewriteRule ^recherche1\.php$ http://www.annuaire-search.com/recherche1-%1.html? [L,R=301]

http://www.annuaire-search.com/recherche1....g=webmaster+hub

ca fonctionne, merci Dan :)

Lien vers le commentaire
Partager sur d’autres sites

ca fonctionne, merci Dan :)

C'était pourtant pas difficile... :lol:

Le problème est que si A redirige vers B, et que B à son tour redirige vers A ... on a une boucle infinie ;)

Lien vers le commentaire
Partager sur d’autres sites

Une dernière question Dan,

si je ne veux qu'une variable acceptée dans mon url que query_string et pas de &var=& etc..

quelle expression regulière tu utiliserais ?

Pour le moment elle accepte tous caractères après le query_string

RewriteCond %{QUERY_STRING} ^query_string=(.*)$

Lien vers le commentaire
Partager sur d’autres sites

En mettant une condition telle que:

RewriteCond %{QUERY_STRING} query_string=([^&]+)

cela devrait prendre tous les caractères qui suivent query_string, jusqu'au premier & non inclus, ou la fin de ligne s'il n'y a pas de & qui suit.

Ne mets pas les caractères ^ ni $ en début et fin de la chaîne de recherche, car tu ne sais pas avec certitude si query_string sera le premier (ou le dernier) paramètre.

Dan

Lien vers le commentaire
Partager sur d’autres sites

Encore un souci cette fois-ci avec preg_replace, les expressions regulières c'est pas mon truc :blush:

$results = preg_replace( "/&np=(.*?)/", "-$1.html", $results );

j'aimerai donc que ca remplace &np=... par

-"caractères".html

mais j'ai

-.html"caractères"

il me le met à la fin why :o

Lien vers le commentaire
Partager sur d’autres sites

Salut Smile,

A quoi te sert le ? de ta règle :?:

Ceci suffit:

$results = preg_replace( "/&np=(.*)/", "-\\1".".html", $results );

ou encore

$results = preg_replace( "/&np=(.*)/", "-\\1.html", $results );

Dan ;)

Lien vers le commentaire
Partager sur d’autres sites

Après verif en effet le ? est un symbole de répétition comme le *

C'est ok maintenant, le rewriting est en place et les 301 aussi, ca devrait faire un peu le ménage :)

thanks :)

Lien vers le commentaire
Partager sur d’autres sites

Ne risques tu pas de te retrouver bloquer, lorsque tu essaieras de changer de page, pour acceder à la seconde page, avec cette méthode ?

Lien vers le commentaire
Partager sur d’autres sites

Posté (modifié)

C'est à dire ?

Là tu changes de pages, la navigation est fluide, j'ai pas de problèmes, ca me permet de mettre toutes mes anciennes pages en 301, pas besoin de fichiers robots, et de les rediriger vers mes pages rewritées.

Modifié par smile
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...