Aller au contenu

Sujets conseillés

Posté (modifié)

personne pour me repondre ?

voilà ce que j'ai fait mais rien ne se passe :(

RewriteCond Host: (.*)

RewriteRule ^recherche\.php\?query_string=(.*)$ http://$1/recherche-$2.html [R=301,L]

Modifié par smile
Posté
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 ;)

Posté

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.

Posté

: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

Posté
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...

Posté

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 :(

Posté

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 :)

Posté

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 ?

Posté

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 ...

Posté
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

Posté

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]

Posté
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 !

Posté

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 :)

Posté
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 ;)

Posté

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=(.*)$

Posté

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

Posté

j'avais oublié que le ^ entre crochet servait à exclure :)

Thanks Dan :)

Posté

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

Posté

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 ;)

Posté

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 :)

Posté

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

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

Veuillez vous connecter pour commenter

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



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