RewriteRule et R=301

Nouveau WRInaute
Bonjour,

J'ai lu quelques sujets liés à mon problème, mais je n'arrive pas à appliquer exactement la solution.
Je m'explique : dans mon fichier htaccess, j'utilise le code suivant pour gérer l'URL rewriting :

Code:
RewriteRule ^([^/]*)-([^/]*)\.html$ /?$1-$2 [L]
RewriteRule ^([^/]*)\.html$ /?$1 [L]

Ainsi j'utilise par exemple l'URL www.monsite.com/graphisme.html au lieu de www.monsite.com/?graphisme
Maintenant j'aimerais simplement que lorsque on tente d'accéder par la deuxième URL (www.monsite.com/?graphisme) on soit redirigé vers la première URL (www.monsite.com/graphisme.html)... j'ai vu qu'on pouvait utiliser R=301 mais je ne vois pas comment l'appliquer... faut-il rajouter une ligne après ou le remplacer ?

Ce qui me fait donc des "duplicate data" :?

Merci d'avance pour votre aide :wink:
 
WRInaute accro
Le mieux est que tu fasses cela dans ta page index.php directement !

Tu vérifies simplement $_SERVER['REQUEST_URI']

Si correspond au masque \?(.*) rediriger sur (.*)\.html :)
 
Nouveau WRInaute
Merci pour ta réponse.

J'ai pensé à cette solution également, mais ce n'est pas plus efficace de le traiter directement dans le htaccess avec R=301 ?
 
WRInaute accro
Malheureusement, j'ai essayé en htaccess et ça marche pas. Maintenant c'est ptet moi qui foire un peu dans ma règle ^^.

J'ai essayé ça: RewriteRule ^\?(.*)$ /$1\.html [L,R=301]
 
Nouveau WRInaute
J'ai essayé exactement la même chose et effectivement ça ne marche pas... la redirection ne se fait pas, mais je suis sûr qu'il y a un moyen de le faire dans le htaccess (???)
 
WRInaute passionné
avec ca :
Code:
RewriteCond %{QUERY_STRING} ^(.+)$
RewriteRule ^$   /%1.html?  [L,R=301]
RewriteCond %{QUERY_STRING} ^(.+)$
RewriteRule ^index.php$   /%1.html?  [L,R=301]
Je conseille quand même la solution en php
 
WRInaute accro
Expertisite a dit:
Merci j'ai bien lu mais ça ne m'aide pas plus. Aurais-tu un exemple par rapport à ma problématique ?
L'exemple que tu as lu est:
Code:
RewriteEngine on
RewriteCond %{QUERY_STRING} ^couleur=(.*)$
RewriteRule ^index\.php$ http://www.domaine.com/%1.html? [L,R=301]
Dans ton cas, cela deviendrait:
Code:
RewriteEngine on
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^$ http://www.domaine.com/%1.html? [L,R=301]

A tester.

Jean-Luc

Edit: commé indiqué par webmasterlamogere qui est très rapide. :wink:
 
Discussions similaires
Haut