Version complète: sur le forum Webmaster Hub : 301 et URL Rewriting conditionnel
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > Fichier .htaccess et réécriture d'URLs
miike
j'essaye de faire pointer une 301 sur l'url du fichier dont l'url est réécrit

voici mon fichier htacces :
Code:
Options +FollowSymlinks
RewriteEngine on


RewriteRule ^fr/(.*)/(.*)\.htm$ /Website/site/fra_$1_$2.htm [L]
RewriteRule ^en/(.*)/(.*)\.htm$ /Website/site/eng_$1_$2.htm [L]
RewriteRule ^fr/(.*)\.htm$ /Website/site/fra_$1.htm [L]
RewriteRule ^en/(.*)\.htm$ /Website/site/eng_$1.htm [L]

#RedirectMatch Permanent ^/Website/site/eng_(.*)_(.*)\.htm /en/$1/$2.htm
#RedirectMatch Permanent ^/Website/site/fra_(.*)_(.*)\.htm /fr/$1/$2.htm
#RedirectMatch Permanent ^/Website/site/eng_(.*)\.htm /en/$1.htm
#RedirectMatch Permanent ^/Website/site/fra_(.*)\.htm /fr/$1.htm


et mon environment de test :
http://www.pixgarden.com/Website/site/

Ca marche tres bien pour l'url.
la 301 semble marcher si elle est seul
Mais les deux ensembles, ca déconne !

Ou me suis je trompé s'il vous plait ? sad.gif
Dan
Avec RewriteRule et RedirectMatch, tu fais appel à 2 modules Apache distincts: respectivement mod_rewrite et mod_alias.

Il n'existe rien que mod_rewrite ne puisse faire seul, pas besoin donc d'encombrer Apache avec les RedirectMatch, écris toutes tes règles avec mod_rewrite (donc RewriteRule) wink.gif

De plus, tes règles telles que définies vont générer une "infinite loop" smile.gif
miike
Merci Dan pour ta réponse.

Visiblement il y a des choses que je ne comprends pas.*

Pour moi, ce n'est pas du tout une loop infinit, je m'explique :

le rewriting (ma partie RewriteRule ) permet a une page d'être accéssible par plusieurs url, elle marche tres bien si elle est toute seul

et les redirection 301 (RedirectMatch Permanent) permettent d'éviter le duplicate content en ne laissant que les url "virtuelles" dans les index des moteurs, si tu vois ce que je veux dire. Et cela fonctionne aussi si le rewriting n'est pas la.

Donc moi je veux bien le faire autrement, si ca me fait la même chose wink.gif

Explique moi ou je suis à l'ouest, s'il te plait smile.gif
Dan
CITATION(miike @ lundi 23 octobre 2006, 15h51) *
et les redirection 301 (RedirectMatch Permanent) permettent d'éviter le duplicate content en ne laissant que les url "virtuelles" dans les index des moteurs, si tu vois ce que je veux dire. Et cela fonctionne aussi si le rewriting n'est pas la.

C'est justement ce que je te disais... les RedirectMatch combinées aux RewriteRule te causent des boucles infinies.... c'est pour cela que ça ne marche pas q_smallexcla.gif

Remplace ta première règle RedirectMatch par
CODE
RewriteRule Website/site/eng_(.*)_(.*)\.htm  http://www.pixgarden.com/en/$1/$2.htm [R=301,L]

et les autres à l'avenant.

et fais un essai.
miike
j'ai juste laissé :

CODE
Options +FollowSymlinks
RewriteEngine on

RewriteRule ^fr/(.*)\.htm$ /Website/site/fra_$1.htm [L]
RewriteRule ^en/(.*)\.htm$ /Website/site/eng_$1.htm [L]

RewriteRule Website/site/eng_(.*)\.htm  http://www.pixgarden.com/en/$1.htm [R=301,L]
RewriteRule Website/site/fra_(.*)\.htm  http://www.pixgarden.com/fr/$1.htm [R=301,L]


et ca déconne tout autant. Comme précédement les 301 fonctionnent si elles sont seuls et les rewriting fonctionnent si ils sont seuls

je comprend pas sad.gif
Dan
Là c'est moi qui ne comprend pas ce que tu veux faire... parce que comme je te le disais, mettre les deux en même temps te crée une boucle infinie.

Quel est le nom du fichier sur l'espace web (pas l'URL) ?
Quelle est l'ancienne URL ? Et quelle est la nouvelle ?

Tu dois bien avoir des pages en .php quelque part, ou alors tu as utilisé une directive AddType ?
miike
Je vais essayer d'être simple et concret wink.gif

à l'origine, j'ai un site avec des urls du type :

ndd.com/Website/site/fra_accueil.htm
ndd.com/Website/site/fra_categorie_mot.htm

Plein plein de fichier htm dans le repertoire physique "site"

C'est moche, tout ca happy.gif

Donc je veux modifier ca mais sans toucher aux fichiers ni au repertoire en plus tous les liens entre les fichiers sont en durs.

Je veux donc rentre accéssible tous ses fichiers depuis des urls plus sympatiques avec ca :
RewriteRule ^fr/(.*)\.htm$ /Website/site/fra_$1.htm

ceci ne fait aucune redirection mais permet en théorie juste de rendre accéssible la page d'accueil depuis l'url :
ndd.com/fr/accueil.htm

Ensuite, je veux faire une redirection 301 pour que cela soit l'url belle qui reste dans l'index des moteurs avec cette regle :
RewriteRule Website/site/fra_(.*)\.htm http://www.pixgarden.com/fr/$1.htm [R=301,L]

Enfin en théorie
Dan
Je comprends mieux pourquoi tu galères...

Si tu changes tes URLs, tu devras automatiquement modifier tes fichiers.
Je ne vois pas comment tu pourrais t'en sortir autrement.
miike
Merci Dan quoi qu'il en soit..
miike
et si je renomme tous mes fichiers en .htmL

avec un htaccess :

CODE
RewriteRule Website/site/eng_(.*)\.htm  http://www.pixgarden.com/en/$1.htm [R=301]
RewriteRule Website/site/fra_(.*)\.htm  http://www.pixgarden.com/fr/$1.htm [R=301]
RewriteRule ^fr/(.*)\.htm$ /Website/site/fra_$1.html [L]
RewriteRule ^en/(.*)\.htm$ /Website/site/eng_$1.html [L]


ca devrait marcher non ?
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.