Redirection 301 .htaccess Helppp!

Nouveau WRInaute
Bonjour à tous.
Je tente desesperemment de faire une redirection 301... sans succés.
J'ai des page qui ont été supprimé et donc qui n existe plus. J aimerai faire une redirection de ces pages vers ma home.
L'url de mon ancienne page : http://www.monsite.com/anciennepage
l'url de ma page d'accueil : http://www.monsite.com/
voila donc le fichier .htaccess
Redirect permanent /anciennepage http://www.monsite.com/
Ce fichier est placé dans le fichier "htdocs" (ou se trouve toutes les pages de mon site".
Cela ne marche pas. 8O
Y a til une âme charitable pour me corriger mon erreur?????
 
WRInaute accro
... et htdocs est bien la racine de ton hébergement ? ou c'est déjà une redirection ?
... et ton hébergement accepte t-il le .htaccess ?
 
Nouveau WRInaute
normalement oui, je suis chez gandi.
quand je rentre dans le ftp, j ai un dossier www.monsite.com puis dans ce fichier, htdocs qui contient toutes mes pages :
www.monsite.com > htdocs >mes pages et repertoire images
Y a t il une faute dans mon fichier .htaccess ?
???!!!! :cry:
 
WRInaute accro
Je suppose qu'il y a aussi des RewriteRule dans ton .htaccess. Quand on emploie en même temps RedirectPermanent et des RewriteRule, il est souvent impossible de déterminer laquelle sera exécutée la première (il n'y a pas que les positions respectives de ces directives dans .htaccess qui détermine l'ordre d'exécution).

Remplace RedirectPermanent par une RewriteRule équivalente et tu obtiendras probablement le résultat souhaité:
Code:
RewriteRule ^ancienne_page$ / [L,R=301]
Jean-Luc
 
WRInaute accro
Comme ceci:
Code:
RewriteRule ^monanciennepage http://www.monsite.com/ [L,R=301]
Quelques remarques:
- habituellement il ne faut pas mettre le / devant "monanciennepage"
- j'ai supprimé le $ qui marque la fin de l'URL (pour tester uniquement)
- il faut un espace devant [L,R=301]
- il ne faut pas qu'il y ait d'autres règles qui empêcheraient celle-ci de fonctionner

Jean-Luc
 
Nouveau WRInaute
Cela semble marché, mais pose un probleme :

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, xxxx@xxxx.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.
Apache/2.2.4 (Ubuntu) DAV/2 PHP/5.2.3-1ubuntu6.5 Server at www.monsite.com Port 80

What that...???
8O
 
WRInaute accro
On aurait peut-être dû commencer par là: qu'y a-t-il d'autre dans ton .htaccess ? Peux-tu nous le copier ici au complet ?

Jean-Luc
 
Nouveau WRInaute
Dans mon .htaccess, je n ai mis uniquement que la ligne de code ci dessus pour tester, et apparemment ça me fait une erreur (500, serveur).
En fait j ai refais monsite.com. L'ancienne version avait été faite sous spip par quelqu'un d autre et il y a pas mal de page aujourd hui sur le web qui n'existe plus.
Sur le ftp, voilà comment mes dossier se présente aujourd hui :
www.monsite.com > htdocs > toutesmespages.php et images
Peut etre est-ce l endroit ou je dépose ce fichier .htacess ?
 
WRInaute accro
S'il n'y a rien d'autre dans ton .htaccess, le RedirectPermanent aurait dû fonctionner. Tu as bien mis le .htacccess à la racine du site, là où tu as ton fichier index.html ou index.php ?

Le nom "monanciennepage" pour ton test, c'est quoi ?

Tu pourrais aussi essayer comme ceci:
Code:
Options +FollowSymlinks
RewriteEngine on 
RewriteRule monanciennepage http://www.monsite.com/ [L,R=301]
J'ai ajouté deux lignes et j'ai enlevé le ^.

Jean-Luc
 
Nouveau WRInaute
J ai fais tout ce que tu mas dit et mais cela me créé une erreur serveur interne.
J ai essayé de placer mon .htaccess à tous les endroits possibles ( à la racine, dans le dossier logs (qui, d ailleurs contient 2 dossiers-access.log et error.log) , cgi-bin ).
Mon ancienne page : www.lerecantou.com/?page=enregistrer
le code :
Options +FollowSymlinks
RewriteEngine on
RewriteRule ?page=enregistrer http://www.monsite.com/ [L,R=301]

Sinon y a t il un autre moyen que le .htaccess de rediriger des pages n existant plus du tout ?
 
WRInaute accro
Comme c'est la query string qui doit être testée, il est normal que les solutions proposées jusqu'ici ne fonctionnent pas. Essaie ceci:
Code:
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{QUERY_STRING} ^page=enregistrer$
RewriteRule ^$ http://www.monsite.com/? [L,R=301]
Le ? dans la dernière ligne est obligatoire.

Jean-Luc
 
Nouveau WRInaute
Ca marche, merci Jean Luc!!
Que veut dire exactement RewriteCond %{QUERY_STRING} ? (histoire de comprendre :) )
Si j ai d autre pages a rediriger, je mets à la "queue lele" ?

Options +FollowSymlinks
RewriteEngine on
RewriteCond %{QUERY_STRING} ^page=enregistrer$
RewriteRule ^$ http://www.monsite.com/? [L,R=301]
RewriteCond %{QUERY_STRING} ^autrespages$
RewriteRule ^$ http://www.monsite.com/? [L,R=301]
RewriteCond %{QUERY_STRING} ^encoreautrespage$
RewriteRule ^$ http://www.monsite.com/? [L,R=301]

ou tout réunir :
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{QUERY_STRING} ^page=enregistrer$
RewriteCond %{QUERY_STRING} ^autrespages$
RewriteCond %{QUERY_STRING} ^encoreautrespage$
RewriteRule ^$ http://www.monsite.com/? [L,R=301]

?
En tout cas, un grand merci pour ton aide et ta patiente
 
WRInaute accro
En supposant que ce sont, chaque fois, des query strings que tu veux tester, tu peux écrire:
Code:
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{QUERY_STRING} ^page=enregistrer$ [OR]
RewriteCond %{QUERY_STRING} ^autrespages$ [OR]
RewriteCond %{QUERY_STRING} ^encoreautrespage$
RewriteRule ^$ http://www.monsite.com/? [L,R=301]
La query string, c'est ce qui suit le ? dans l'URL.

En clair, les directives signifient:
si la query string est "page=enregistrer" ou
si la query string est "autrespages" ou
si la query string est "encoreautrespage",
alors rediriger http:/
/www.monsite.com/?... vers http://www.monsite.com/ tout court.


Jean-Luc
 
Discussions similaires
Haut