Aller au contenu

301 et URL Rewriting conditionnel


Sujets conseillés

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 ? :(

Modifié par miike
Lien vers le commentaire
Partager sur d’autres sites

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) ;)

De plus, tes règles telles que définies vont générer une "infinite loop" :)

Lien vers le commentaire
Partager sur d’autres sites

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 ;)

Explique moi ou je suis à l'ouest, s'il te plait :)

Modifié par miike
Lien vers le commentaire
Partager sur d’autres sites

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 :!:

Remplace ta première règle RedirectMatch par

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.

Lien vers le commentaire
Partager sur d’autres sites

j'ai juste laissé :

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 :(

Modifié par miike
Lien vers le commentaire
Partager sur d’autres sites

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 ?

Lien vers le commentaire
Partager sur d’autres sites

Je vais essayer d'être simple et concret ;)

à 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 ^^

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

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

et si je renomme tous mes fichiers en .htmL

avec un htaccess :

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 ?

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...