8768 sujets

Développement web côté serveur, CMS

Bonjour à tous.

Je ne parviens pas à faire une redirection 301 correcte.

Voici un extrait de mon htaccess :


# 404
ErrorDocument 404  http://www.mondomaine.fr/404
 
# URL REWRITING
RewriteEngine On
RewriteBase /
RewriteRule ^page1$ index.php?page=1 [L]
RewriteRule ^page2$ index.php?page=2 [L]
# FORCE WWW
RewriteCond %{HTTP_HOST} ^mondomaine.fr$
RewriteRule ^(.*)  http://www.mondomaine.fr/  [QSA,L,R=301]


Donc en gros, j’ai réussi à activer url rewriting sur un serveur mutualisé 1&1, les pages se renomment bien proprement (sans le index.php?page=) mais j’ai essayé pas mal de méthodes pour faire en sorte que si je tape l’adresse de la page avec l’ancien non : « index.php?page=1″ quelle soit redirigé vers « page1″ automatiquement.

Comment faire ?

5 MINUTES + TARD

Je viens de réussir à faire une redirection 301 mais ce n’est pas encore parfait.

J’ai rajouté ceci :


# version .htaccess
RewriteEngine On
RewriteCond %{THE_REQUEST} ^(GET|POST|HEAD)\ (/.*)?/index.(htm|html|php|asp)
RewriteRule ^(.*)index.(htm|html|php|asp)$ /$1 [R=301,L]


Ma page « http://www.mondomaine.fr/index.php?=page1″ est redirigé vers « »http://www.mondomaine.fr/?=page1″

Pas encore ça … :\

Une solution ?

Merci Smiley biggrin
Modifié par yank (14 Mar 2010 - 16:15)
Salut,

j'ai pas trop le temps donc j'ai lu en diagonale mais la redirection 301 devrait être placée en premier et être du style :
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^domaine.com$
RewriteRule ^(.*)  http://www.domaine.com/$1   [QSA,L,R=301]
RewriteRule ... le reste
Merci quand même, mais cela ne change rien...

Ma redirection 301 fonctionne bien sur mon site concernant le www, mais pas pour les pages :

Actuellement les 2 sont accessibles :


http://www.monsite.fr/index.php?page=test
http://www.monsite.fr/test


Or je ne veux que :

http://www.monsite.fr/test

Une idée ?

Je remets mon htacess :


ErrorDocument 404  http://www.monsite.fr/404
 

Options +FollowSymlinks 
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^monsite.fr$ 
RewriteRule ^(.*)  http://www.monsite.fr/$1  [QSA,L,R=301] 

RewriteRule  ^test$ index.php?page=test [L]
Heyoan a écrit :
Euh... ben c'est normal que les 2 soient accessibles : c'est à toi de faire en sorte que les liens aient la forme voulue (dans le menu de navigation notamment). Smiley murf


^^

Je d'accord avec toi Smiley cligne

Mais mon soucis ne vient pas de la : j'ai bien actualisé mes liens internes pas de soucis.

Mais quand je tape à la main l'adresse j'y accède, en gros pour les moteurs de recherches j'ai 2 pages :

http://www.monsite.fr/test
et
http://www.monsite.fr/index.php?page=test

je veux en supprimer une des 2 pour éviter le duplicate content et ce serait plus propre aussi comme cela.

J'ai réussi tout à l'heure à moitié, c'est à dire quand je tapais (à la main)
http://www.monsite.fr/index.php?page=test le navigateur me renvoyait :
http://www.monsite.fr/?page=test

Moi je veux http://www.monsite.fr/test uniquement.

Smiley biggol
yank a écrit :
Mais quand je tape à la main l'adresse j'y accède, en gros pour les moteurs de recherches j'ai 2 pages
Hem... pouf pouf ! Smiley langue

A partir du moment où tu fais de l'urlrewriting pour transformer une url A en url B les urls A et B sont forcément accessibles toutes les 2 lorsqu'on les saisit à la main !

Concernant les moteurs de recherche ils mettent à jour régulièrement les cartes des sites et donc si tu n'as plus que l'url A de disponible l'url B ne sera plus considérée comme existante.


Edit: Par exemple on peut saisir
http://forum.alsacreations.com/topic-20-47425-1-Url-Rewriting--Redirection-301.html
OU
http://forum.alsacreations.com/topic.php?fid=20&tid=47425
Modifié par Heyoan (14 Mar 2010 - 17:10)
Heyoan a écrit :
Hem... pouf pouf ! Smiley langue

A partir du moment où tu fais de l'urlrewriting pour transformer une url A en url B les urls A et B sont forcément accessibles toutes les 2 lorsqu'on les saisit à la main !

Concernant les moteurs de recherche ils mettent à jour régulièrement les cartes des sites et donc si tu n'as plus que l'url A de disponible l'url B ne sera plus considérée comme existante.

Smiley lol Pouf Pouf

Je suis entièrement d'accord avec ce que tu dis et oui je pense que Mr Google va zapper l'ancienne version de mes pages d'ici quelques mois, et je peux même l'aider avec des Canonical si je suis parano Smiley ravi mais tout ça ne répond pas à ma question :

Comment faire ma redirection 301 via htaccess pour faire en sorte que mes 2 pages ne pointent plus que sur 1 seule.

Mais merci quand même pour ton aide Smiley smile
yank a écrit :
Comment faire ma redirection 301 via htaccess pour faire en sorte que mes 2 pages ne pointent plus que sur 1 seule.
C'est déjà le cas avec ta redirection 301 dans le .htaccess ! Smiley fou

Bon, comme plus ça va et moins je comprends ce que tu dis je pense que je vais en rester là... à moins que tu ne me redises tout ça en créole (réunionnais de préférence) ! Smiley biggol
Heyoan a écrit :
C'est déjà le cas avec ta redirection 301 dans le .htaccess ! Smiley fou

Bon, comme plus ça va et moins je comprends ce que tu dis je pense que je vais en rester là... à moins que tu ne me redises tout ça en créole (réunionnais de préférence) ! Smiley biggol


Smiley biggol Je vais de ce pas apprendre le réunionnais !

Smiley lol
Je refais un essai ... des fois que Smiley ravi

Voici mon pti bout de code HTACCESS


# Redirection 301
RewriteCond %{HTTP_HOST} ^monsite.fr$ 
RewriteRule ^(.*)  http://www.monsite.fr/$1  [QSA,L,R=301] 
# Rewrite
RewriteRule  ^super$ index.php?page=super [L]


On est d'accord, dans un 1er temps je fais une redirection sur le nom de domaine, donc http://monsite.fr sera redirigé automatiquement vers http://www.monsite.fr.

Ensuite je fais de l'url rewriting pour renommer une page donc la page http://www.monsite.fr/index.php?page=super est accessible également à présent via http://www.monsite.fr/super.

Jusque la c'est cool Smiley lol tout va bien.

--

Maintenant ce que je veux appliquer à ma page "super", est le même principe que la redirection pour le "www".

C'est à dire que si je tape http://www.monsite.fr/index.php?page=super (qui est toujours accessible) je veux que cette page soit redirigé vers http://www.monsite.fr/super.

Je pense que cela est possible ?

Parce que pour le moment j'ai fait de l'url rewriting pour les pages mais pas de redirection 301 (sauf pour le sous-domaine www ...)

Je me trompe ?
Modifié par yank (15 Mar 2010 - 15:59)
yank a écrit :
JJe pense que cela est possible ?
Ben non : tu ne peux pas simultanément avoir une règle qui réécrit une url A en url B et une autre qui réécrit une url B en url A. Smiley murf
Heyoan a écrit :
Ben non : tu ne peux pas simultanément avoir une règle qui réécrit une url A en url B et une autre qui réécrit une url B en url A. Smiley murf

Ok ... je vois.

Mais dans ce cas alors, pourquoi en rajoutant ce code, j'ai réussi à avoir un semblant de redirection :


RewriteCond %{THE_REQUEST} ^(GET|POST|HEAD)\ (/.*)?/index.(htm|html|php|asp)
RewriteRule ^(.*)index.(htm|html|php|asp)$ /$1 [R=301,L]


En gros ma page http://www.monsite.fr/index.php?page=super se transformait en http://www.monsite.fr/?page=super donc presque ce que je veux obtenir.

Donc au final, si la méthode si dessus ne fonctionne pas, il n'y a aucune solution ?

J'ai l'impression de ne pas tout saisir (et je pense que tu l'as remarqué Smiley ravi ), la vague impression de ne pas avoir le choix :

- Soit on fait une redirection 301
- Soit Url Rewriting

Mais les 2 en même temps posent problème ...
Modifié par yank (15 Mar 2010 - 16:35)
yank a écrit :
- Soit on fait une redirection 301
- Soit Url Rewriting

Mais les 2 en même temps posent problème ...
Ben surtout je ne vois pas pourquoi tu fais une nuance entre les 2 : c'est juste des flags différents mais ça reste de l'urlrewriting (qui commence par RewriteRule).

A lire : 4 articles sur le htaccess.
Heyoan a écrit :
Ben surtout je ne vois pas pourquoi tu fais une nuance entre les 2 : c'est juste des flags différents mais ça reste de l'urlrewriting (qui commence par RewriteRule).

A lire : 4 articles sur le htaccess.

Merci pour ton lien.

Je vais me retirer dans ma caverne pour le moment et méditer un peu tout ça Smiley cligne