smile Posté 12 Juin 2005 Posté 12 Juin 2005 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 Un peu d'aide serait sympa
smile Posté 12 Juin 2005 Auteur Posté 12 Juin 2005 (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é 12 Juin 2005 par smile
Dan Posté 12 Juin 2005 Posté 12 Juin 2005 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 onRewriteRule recherche-(.*)\.html recherche.php?query-string=$1 [L] Si ce n'est pas ce que tu veux faire, essaies d'être plus explicite
smile Posté 12 Juin 2005 Auteur Posté 12 Juin 2005 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.
smile Posté 13 Juin 2005 Auteur Posté 13 Juin 2005 On est lundi Dan je me permet de remonter le sujet
Dan Posté 13 Juin 2005 Posté 13 Juin 2005 J'ai oublié le flag R=301 La règle devient donc: RewriteEngine onRewriteRule recherche-(.*)\.html http://www.domaine.tld/recherche.php?query-string=$1 [R=301,L] Dan
smile Posté 13 Juin 2005 Auteur Posté 13 Juin 2005 non ca marche pas je l'avais deja testé, il fait l'inverse exemple avec recherche1.php -http://www.annuaire-search.com/recherche1.php?query_string=webmaster+hub pas de redirection, mais par contre redirection avec : http://www.annuaire-search.com/recherche1-webmaster+hub.html
Dan Posté 13 Juin 2005 Posté 13 Juin 2005 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...
Dan Posté 13 Juin 2005 Posté 13 Juin 2005 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
smile Posté 13 Juin 2005 Auteur Posté 13 Juin 2005 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
Dan Posté 13 Juin 2005 Posté 13 Juin 2005 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 ?
smile Posté 13 Juin 2005 Auteur Posté 13 Juin 2005 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 ...
Dan Posté 13 Juin 2005 Posté 13 Juin 2005 là Dan tu compliques Ben non, c'est exactement ce que je te disais. 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" ) Dan
smile Posté 13 Juin 2005 Auteur Posté 13 Juin 2005 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 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]
Dan Posté 14 Juin 2005 Posté 14 Juin 2005 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 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 Sinon tu auras automatiquement une boucle infinie !
smile Posté 14 Juin 2005 Auteur Posté 14 Juin 2005 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
Dan Posté 14 Juin 2005 Posté 14 Juin 2005 ca fonctionne, merci Dan C'était pourtant pas difficile... Le problème est que si A redirige vers B, et que B à son tour redirige vers A ... on a une boucle infinie
smile Posté 14 Juin 2005 Auteur Posté 14 Juin 2005 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=(.*)$
Dan Posté 15 Juin 2005 Posté 15 Juin 2005 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
smile Posté 15 Juin 2005 Auteur Posté 15 Juin 2005 j'avais oublié que le ^ entre crochet servait à exclure Thanks Dan
smile Posté 15 Juin 2005 Auteur Posté 15 Juin 2005 Encore un souci cette fois-ci avec preg_replace, les expressions regulières c'est pas mon truc $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
Dan Posté 15 Juin 2005 Posté 15 Juin 2005 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
smile Posté 15 Juin 2005 Auteur Posté 15 Juin 2005 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
Anonymus Posté 16 Juin 2005 Posté 16 Juin 2005 Ne risques tu pas de te retrouver bloquer, lorsque tu essaieras de changer de page, pour acceder à la seconde page, avec cette méthode ?
smile Posté 16 Juin 2005 Auteur Posté 16 Juin 2005 (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é 16 Juin 2005 par smile
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant