Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Serveurs (Apache, IIS,...) > Apache
Apache Forum d'entraide Apache. Avant de poster : Cours Apache, FAQ Apache
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 15/10/2008, 10h12   #1 (permalink)
Invité de passage
 
Date d'inscription: octobre 2008
Messages: 7
Par défaut Souci de URLrewriting et 301.

Bonjour,

J'utilise pour notre ecommerce Oscommerce avec les modules More Categories et Seo Url Rewriting.

Comme j'ai dernièrement modifié les règles de URL rewriting sur notre site, il existe dans le cache de google et sur certains sites (ayant fait des BL) de mauvaises URL, qu'il nous faut donc rediriger vers les bonnes !

J'ai donc :
- une mauvaise URL (ancienne URL en fait) nommée /boutique/produitdelamortquitue-p-254.html
Je souhaite :
- faire une 301 sur la nouvelle URL nommée /boutique/produits-mort-qui-tue-p-254.html

Paf, je ponds donc ça dans mon htaccess...

Code :
Options +FollowSymLinks
RewriteEngine On
RewriteBase /boutique/

RewriteRule ^(.*)-p-(.*).html$ product_info.php?products_id=$2&%{QUERY_STRING}
RewriteRule ^(.*)-c-(.*).html$ index.php?cPath=$2&%{QUERY_STRING}
RewriteRule ^(.*)-m-([0-9]+).html$ index.php?manufacturers_id=$2&%{QUERY_STRING}
RewriteRule ^(.*)-pi-([0-9]+).html$ popup_image.php?pID=$2&%{QUERY_STRING}
RewriteRule ^(.*)-t-([0-9]+).html$ articles.php?tPath=$2&%{QUERY_STRING}
RewriteRule ^(.*)-a-([0-9]+).html$ article_info.php?articles_id=$2&%{QUERY_STRING}
RewriteRule ^(.*)-pr-([0-9]+).html$ product_reviews.php?products_id=$2&%{QUERY_STRING}
RewriteRule ^(.*)-pri-([0-9]+).html$ product_reviews_info.php?products_id=$2&%{QUERY_STRING}
RewriteRule ^(.*)-i-([0-9]+).html$ information.php?info_id=$2&%{QUERY_STRING}



<Files .htaccess>
   order allow,deny
   deny from all
</Files>
<IfModule mod_alias.c>
   Redirect permanent /boutique/produitdelamortquitue-p-254.html http://www.monsite.fr/boutique/produit-mort-qui-tue-p-254.html
      
</IfModule>
Mais voila... Ça ne marche pas pile poil bien, car lors de la redirection, je suis relancé sur :

/boutique/produits-mort-qui-tue-p-254.html?products_id=254

Mon souci donc : ce id de produit qui déboule d'on ne sait où...

Ma question ici à vous : Comment puis je faire pour éviter qu'il y ait ce ID?

Merci d'avance pour vos futures réponses !

Dernière modification par DriGar ; 15/10/2008 à 13h30.
DriGar est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 15/10/2008, 11h10   #2 (permalink)
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Date d'inscription: août 2005
Messages: 5 656
Par défaut

Question bête : tu as essayé en mettant ton Redirect tout en haut du fichier, avant les RewriteRule ? Le products_id=254 vient de la première RewriteRule qui est activée car ton URL /boutique/produitdelamortquitue-p-254.html semble l'activée à cause du -p-.
__________________

Avant d'utiliser le verbe "dédier", vérifiez-en le sens ici.
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est actuellement connecté   Envoyer un message privé Réponse avec citation
Vieux 15/10/2008, 11h50   #3 (permalink)
Invité de passage
 
Date d'inscription: octobre 2008
Messages: 7
Par défaut

Bonjour Mac et merci pour ta réponse !

Ahhh Mac... que de souvenirs... un avion avec un cerf volant, un explosif avec un chewing gum... J'adorais !

Alors, concernant ta question : Je viens de tenter d'inverser en mettant les redirect en haut du fichier, avant les rewriterules... Et ça ne change malheureusement rien.



En fait, lors de la 301, il me répète deux fois l'id du produit. Une fois dans l'url rewritée, et une seconde fois en cadeau bonux à la fin de l'URL.

/boutique/produits-mort-qui-tue-p-254.html?products_id=254

Et c'est ça qui me paraît suspect !

Je suppose en effet que ça doit provenir d'une rewriterule, mais comment faire, quoi ajouter? Je reste perplexe...
DriGar est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 15/10/2008, 13h23   #4 (permalink)
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Date d'inscription: août 2005
Messages: 5 656
Par défaut

Question de principe avant que je ne teste : pourquoi tu donnes des URL en /boutique/, que ton Redirect indique /boutique/, mais que tu as un RewriteBase /boutique-xxx/ ? C'est quoi la vraie URL ?
__________________

Avant d'utiliser le verbe "dédier", vérifiez-en le sens ici.
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

Dernière modification par _Mac_ ; 15/10/2008 à 21h00.
_Mac_ est actuellement connecté   Envoyer un message privé Réponse avec citation
Vieux 15/10/2008, 13h30   #5 (permalink)
Invité de passage
 
Date d'inscription: octobre 2008
Messages: 7
Par défaut

Oups, désolé... Le rewritebase /boutique-xxx/ est un reste de la "vraie URL".

J'ai donné là des URL d'exemples, ne souhaitant pas communiquer les vrais URL (sachant de plus qu'il vaut mieux éviter généralement sur les forum, selon les chartes).

Cependant, le souci ne vient pas d'une mauvaise rewritebase. Elle est en accord avec les urls modifiés.

Merci pour ton coup de main Mac.


PS : j'ai modifié mon premier message, et mis "/boutique/" pour la rewritebase.

Dernière modification par _Mac_ ; 15/10/2008 à 21h00.
DriGar est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 15/10/2008, 13h38   #6 (permalink)
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Date d'inscription: août 2005
Messages: 5 656
Par défaut

OK, parfait, je vais tester.
__________________

Avant d'utiliser le verbe "dédier", vérifiez-en le sens ici.
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est actuellement connecté   Envoyer un message privé Réponse avec citation
Vieux 15/10/2008, 14h19   #7 (permalink)
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Date d'inscription: août 2005
Messages: 5 656
Par défaut

Bon, je ne comprends pas trop ce qu'il se passe (mod_rewrite semble être exécuté avant mod_alias), mais ça marche comme ceci sans Redirect et sans RewriteBase
Code :
RewriteEngine On

RewriteRule ^boutique/produitdelamortquitue-p-254.html /boutique/produit-mort-qui-tue-p-254.html [R=301,L]
RewriteRule ^boutique/(.*)-p-(.*).html$ boutique/product_info.php?products_id=$2&%{QUERY_STRING} [L]
RewriteRule ^boutique/(.*)-c-(.*).html$ boutique/index.php?cPath=$2&%{QUERY_STRING}
...
L'idée c'est donc de passer aussi par mod_rewrite pour la redirection externe. J'ai donc retiré le RewriteBase (je sais pas trop pourquoi mais avec, ça marche pas) et donc rajouté boutique/ partout dans les RewriteRule.

J'ai testé avec un .htaccess à la racine de mon site et un répertoire boutique qui contient les fichiers index.php, product_info.php, etc.
__________________

Avant d'utiliser le verbe "dédier", vérifiez-en le sens ici.
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est actuellement connecté   Envoyer un message privé Réponse avec citation
Vieux 15/10/2008, 14h36   #8 (permalink)
Invité de passage
 
Date d'inscription: octobre 2008
Messages: 7
Par défaut

Merci pour ce test... Malheureusement, ça ne le fait pas chez moi (après avoir tenté moult choses...).

J'ai deux fichiers .htaccess en ce qui me concerne.

Tout d'abord, un premier à la racine pour www.monsite.fr et le second dans le dossier /boutique pour www.monsite.fr/boutique/.

Mon premier htaccess (à la racine) est le suivant :

Code :
ErrorDocument 400 http://www.monsite.fr/404.php
ErrorDocument 401 http://www.monsite.fr/404.php
ErrorDocument 402 http://www.monsite.fr/404.php
ErrorDocument 403 http://www.monsite.fr/404.php
ErrorDocument 404 http://www.monsite.fr/404.php
ErrorDocument 405 http://www.monsite.fr/404.php
ErrorDocument 500 http://www.monsite.fr/404.php
ErrorDocument 501 http://www.monsite.fr/404.php
ErrorDocument 502 http://www.monsite.fr/404.php
ErrorDocument 503 http://www.monsite.fr/404.php
ErrorDocument 504 http://www.monsite.fr/404.php
ErrorDocument 505 http://www.monsite.fr/404.php

<Files .htaccess>
	order allow,deny
	deny from all
</Files>
<IfModule mod_alias.c>
	Redirect permanent /premierecommande.php http://www.monsite.fr/generique/premierecommande.php
</IfModule>
Le second, tu as pu déjà le voir...
DriGar est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 15/10/2008, 15h35   #9 (permalink)
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Date d'inscription: août 2005
Messages: 5 656
Par défaut

Je testerai plus tard avec cette configuration.

Quand tu as fait tes tests, as-tu vidé le cache de ton navigateur ? Les redirections permanentes peuvent être gardées en mémoire, donc méfiance. Par exemple, je vidais le cache systématiquement avant de faire un essai.
__________________

Avant d'utiliser le verbe "dédier", vérifiez-en le sens ici.
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est actuellement connecté   Envoyer un message privé Réponse avec citation
Vieux 15/10/2008, 17h20   #10 (permalink)
Invité de passage
 
Date d'inscription: octobre 2008
Messages: 7
Par défaut

Oui, dans ces cas là, je fais des grandes doses de CTRL+F5 !

Je te remercie encore pour ton coup de main !
DriGar est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 15/10/2008, 21h08   #11 (permalink)
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Date d'inscription: août 2005
Messages: 5 656
Par défaut

Ben, en virant mes modifs sur le RewriteBase et l'ajout de /boutique dans les RewriteRule, ça marche nickel :
Code :
Options +FollowSymLinks
RewriteEngine On
RewriteBase /boutique/

RewriteRule ^produitdelamortquitue-p-254.html$ produit-mort-qui-tue-p-254.html [R=302,L]

RewriteRule ^(.*)-p-(.*).html$ product_info.php?products_id=$2&%{QUERY_STRING}
RewriteRule ^(.*)-c-(.*).html$ index.php?cPath=$2&%{QUERY_STRING}
RewriteRule ^(.*)-m-([0-9]+).html$ index.php?manufacturers_id=$2&%{QUERY_STRING}
RewriteRule ^(.*)-pi-([0-9]+).html$ popup_image.php?pID=$2&%{QUERY_STRING}
RewriteRule ^(.*)-t-([0-9]+).html$ articles.php?tPath=$2&%{QUERY_STRING}
RewriteRule ^(.*)-a-([0-9]+).html$ article_info.php?articles_id=$2&%{QUERY_STRING}
RewriteRule ^(.*)-pr-([0-9]+).html$ product_reviews.php?products_id=$2&%{QUERY_STRING}
RewriteRule ^(.*)-pri-([0-9]+).html$ product_reviews_info.php?products_id=$2&%{QUERY_STRING}
RewriteRule ^(.*)-i-([0-9]+).html$ information.php?info_id=$2&%{QUERY_STRING}



<Files .htaccess>
   order allow,deny
   deny from all
</Files>
#<IfModule mod_alias.c>
#   Redirect permanent /boutique/produitdelamortquitue-p-254.html http://localhost/boutique/produit-mort-qui-tue-p-254.html
#      
#</IfModule>
__________________

Avant d'utiliser le verbe "dédier", vérifiez-en le sens ici.
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est actuellement connecté   Envoyer un message privé Réponse avec citation
Vieux 16/10/2008, 09h45   #12 (permalink)
Invité de passage
 
Date d'inscription: octobre 2008
Messages: 7
Par défaut

Ça fonctionne !

Merci Mac... !!

Donc je passe plutot par une rewriterule que par un redirect permanent. Maiis bon, ça marche !

Question tout de même : Est-ce que le PR va lui aussi être redirigé? Par hasaaard ?
Car si c'est une redirection 302, j'ai cru comprendre que la popularité de la page n'était pas elle aussi redirigée? :s





-----

EDIT : Ou alors, j'ai pas tout capté... Faut il que je mette ET le rewriterule ET le redirect permanent??

Dernière modification par DriGar ; 16/10/2008 à 11h33.
DriGar est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 16/10/2008, 19h33   #13 (permalink)
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Date d'inscription: août 2005
Messages: 5 656
Par défaut

seulement le RewriteRule : si tu regardes bien, le Redirect est commenté. Le problème est celui que je disais : le RewriteRule est processé avant le Redirect, d'où la transformation du Redirect en RewriteRule pour pouvoir choisir l'ordre des opérations.

Le 302, c'est une erreur : faut mettre R=301.

Quant au PR, je n'en ai aucune idée.
__________________

Avant d'utiliser le verbe "dédier", vérifiez-en le sens ici.
Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute
_Mac_ est actuellement connecté   Envoyer un message privé Réponse avec citation
Vieux 19/10/2008, 11h39   #14 (permalink)
Invité de passage
 
Date d'inscription: octobre 2008
Messages: 7
Par défaut

A priori, si c'est une redirection 301 et non 302, les robots des moteurs de recherche vont considérer cette redirection comme définitive... Donc la popularité de la page devrait être lui aussi redirigé.

Je vais vérifier ça à l'avenir !

Merci en tout cas Mac !
DriGar est déconnecté   Envoyer un message privé Réponse avec citation
NEWS APACHEF.A.Q APACHETUTORIELS APACHELIVRES APACHE

Réponse Proposer ce sujet en actualité

Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Serveurs (Apache, IIS,...) > Apache



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non



Fuseau horaire GMT +1. Il est actuellement 16h50.


Vos questions techniques : forum d'entraide Apache - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Hébergement - Participez - Copyright © 2000-2010 www.developpez.com - Legal informations.