Avec "R=301" l'url n'est plus reécrite :(

Nouveau WRInaute
Bonjour,

Voici ce que j'utilise pour le moment :

Code:
RewriteEngine on
RewriteRule ^categorie([-,0-9,A-Z,a-z,_]+),([0-9]+)\.html$ /forum/voir_sujet.php?id_sous_cat=$2 [L]

Voici ce que cela donne dans l'URL : "http://www.domaine.com/forum/categorie-actualites-informatiques-news,11.html". Le problème, c'est qu'il fait une redirection 302.

Or si je mets R=301, l'URL n'est plus transformée avec ce htaccess :

Code:
RewriteEngine on
RewriteRule ^categorie([-,0-9,A-Z,a-z,_]+),([0-9]+)\.html$ /forum/voir_sujet.php?id_sous_cat=$2 [R=301,L]

Par contre, les paramètres reviennent malheureusement dans l'URL et cela donne : "http://www.domaine.com/forum/voir_sujet.php?id_sous_cat=11".

Ce que je souhaite c'est réavoir les URL reécrites dans la barre URL du navigateur comme "forum/categorie-actualites-informatiques-news,11.html" ET avoir la redirection 301.

Merci !
 
WRInaute accro
Logiquement ton premier exemple de code ne devrait provoquer aucune redirection. C'est une simple réécriture d'URL sans redirection. C'est pour cela que l'adresse est affichée telle quelle.

Pour ton deuxième exemple, il est normal que tu aies une redirection 301 et que l'adresse affichée soit celle spécifiée à droite dans la redirection.

Si, malgré tout, tu as une redirection 302 dans le premier cas, elle ne provient pas de cette ligne de code de ton .htaccess.

Jean-Luc
 
Nouveau WRInaute
Bonsoir à tous les deux et merci pour votre aide !

Vap a dit:
J'ai du mal a comprendre ce que tu veux.

Donne l'url à transformer...

En fait, pour le moment, les URLs sont reécrites avec la 1ère méthode et d'après AWSTATS, je n'ai que du 302 donc de la redirection temporaire, or j'ai lu qu'il vaut mieux du 301 !

J'ai donc mis [R=301 , L] mais dès que l'on clique sur un lien forgé comme il faut en PHP, donc "http://www.domaine.com/forum/categorie-actualites-informatiques-news,11.html" dans la barre d'adresse du navigateur, je me retrouve avec l'URL brute sans reécriture du type "http://www.domaine.com/forum/voir_sujet.php?id_sous_cat=11".

jeanluc a dit:
Logiquement ton premier exemple de code ne devrait provoquer aucune redirection. C'est une simple réécriture d'URL sans redirection. C'est pour cela que l'adresse est affichée telle quelle.

Pour ton deuxième exemple, il est normal que tu aies une redirection 301 et que l'adresse affichée soit celle spécifiée à droite dans la redirection.

Si, malgré tout, tu as une redirection 302 dans le premier cas, elle ne provient pas de cette ligne de code de ton .htaccess.

Jean-Luc

Effectivement, je reécrit l'URL en PHP pour qu'elle soit bien forgée avec des mots clés dedans issus des titre de la catégorie. Le 1er code du htaccess me permet de récupérer les paramètres et de les récupérer dans une autre page, le tout avec une adresse très propre dans l'URL.

Comme expliqué plus haut, je souhaiterai du 301 plutôt que du 302 mais dès que je mets 301, l'URL est forgée en PHP, et quand je clique dessus, l'URL ne reste pas reécrite ; je me retrouve avec une URL de base tout moche "http://www.domaine.com/forum/voir_sujet.php?id_sous_cat=11", c'est à dire comme s'il n'y avait pas de htacess.

Je ne sais pas comment faire du 301, j'ai vu sur le forum qu'il faut utiliser RewriteCond ? A moins que le 302 ne soit pas génant, mais si je peux gagner en référencement en mettant simplement du 301 je veux le faire :D
 
WRInaute impliqué
Comme on te l'a dit, la redirection 302 ne vient pas de tes règles. Il faut que tu sache d'ou vient cette redirection pour résoudre le problème. as tu redirigé ton nom de domaine d'une façon ou d'un autre?

Ensuite, quand tu utilsie une règle avec R=301, le résultat de la règle c'est-à-dire la partie droie devient visible. C'est bien ce que tu observe.
 
Nouveau WRInaute
Dans la configuration Apache2, j'ai spécifié une simple redirection du ".domaine.com" vers "www.domaine.com" avec ceci :

Code:
RewriteEngine on
        RewriteCond %{HTTP_HOST}   !^www\.domaine\.com [NC]
        RewriteCond %{HTTP_HOST}   !^$
        RewriteRule ^/(.*)         http://www.domaine.com/$1 [L,R=301]

Pour la redirection 302 si cela ne vient pas des règles du htaccess, je ne vois pas d'ou cela pourrait venir :oops:
 
WRInaute passionné
Attention, cen'est pas un en-tete 301 qu'il te faut dans le cas d'une réécriture d'url, mais un 200 : OK.
En fait, en accédant à ta page *.html, on doit directement obtenir le contenu de la page, sans percevoir de redirection (302 ou 301).

Comment as-tu vérifié que le code renvoyé était un 302 ?
 
Nouveau WRInaute
Effectivement, j'ai bien un retour 200:OK quand je clique directement sur un lien.

En fait, sous AWSTATS installé sur mon dédié, je vois que tout est en 302. Voici un screenshot :

11bf62515dc03c84217bd192047038ce.png


Une autre question, l'adresse du site est accessible par "http://www.domaine.com/forum/categorie-actualites-informatiques-news,11.html" mais également par "http://www.domaine.com/forum/voir_sujet.php?id_sous_cat=11" : comment évitez d'avoir du duplicate, si jamais j'ai oublié en PHP de reforger toutes les URLS pour qu'elles soient bien écrites ?

A l'origine, les URLS comportaient des "id=" et autres joyausetés puis j'ai reforgé les urls en PHP mais il est possible que j'en ai oublié, du coup, Google peut trouver un ancienne adresse mais également la nouvelle et la détecter en duplicate.

Existe-il une astuce, ou alors je dois obligatoirement vérifier sur tout mon site que les URL sont bien reécrites ?

Merci beaucoup !
 
WRInaute accro
zigzig a dit:
En fait, sous AWSTATS installé sur mon dédié, je vois que tout est en 302.
Ce rapport AWStats te dit que tu as des redirections 302, mais il ne te dit pas que cela a quelque chose à voir avec tes réécritures d'URL.

Si tu veux aller plus loin avec AWStats, il faut ajouter des "extra sections" à ton fichier de configuration pour obtenir les URL pour lesquelles il y a redirection 302.

Avec les CMS, il est fréquent qu'il y ait des redirections 302 quand on accède à l'interface d'administration.

Jean-Luc
 
Nouveau WRInaute
D'accord, merci.

Autre chose : aurais-tu un lien qui explique comment réaliser une "extra sections" qui affiche les URLs avec du 302 ? :D
 
WRInaute accro
Ici : http://www.internetofficer.com/awstats/http-error-drilldown/

N'oublie pas de remplacer les 500 par des 302 ! :wink:

Jean-Luc
 
Discussions similaires
Haut