Modérateur
Bonjour,

Après lecture de la page d'Alex concernant la redirection en utilisant htaccess, je n'ai pas trouvé la réponse à ma question qui est la suivante :

Comment peut-on rediriger un visiteur arrivant sur un site complètement fermé vers un autre. En clair, je souhaiterais rediriger un utilisateur qui arrive sur un ancien site (adresse saisies par l'utilisateur possibles : www.anciensite.com/index.php, www.anciensite.com/actualite.php, www.ancien.com/ressources/index.php) vers la page d'accueil d'un nouveau site (www.nouveausite.com). J'ai réussi à rediriger à partir d'une adresse bien précise mais pas pour toutes les pages du domaine www.aciensite.com (ça aurait été difficile de faire ça manullement !). Je suppose que l'on peut utiliser les expressions régulière pour ça, mais là, je n'y connais rien et j'ai vraiment pas le temps Smiley confused !).

Merci beaucoup pour votre aide.
Modifié par jojaba (06 Jan 2007 - 21:04)
Modérateur
j'ai testé la méthode suivante :
redirect 301  http://www.scriptet.com/
 

proposée sur la page que tu proposes. Ne fonctionne pas !

Pour préciser les choses, il faut savoir que je souhaiterais rediriger d'un compte free vers un autre compte free (anciencompte.free.fr vers nouveaucompte.free.fr)

j'ai lu la documentation sur Free il y est question de modification d'apache je cite :
Nous avons modifié Apache afin d'en permettre une utilisation simple pour tous, ce qui explique la directive PerlSetVar AuthFile. Elle est obligatoire et ne peut pas être remplacée par les équivalents d'Apache.
Je ne sais donc pas si les moyens habituels pourront fonctionner. Smiley decu
Une autre proposition ?
Modérateur
Salut,

As-tu testé ceci dans ton .htaccess ?


RedirectPermanent /index.php http*://www.scriptet.com/
RedirectPermanent /actualite.php http*://www.scriptet.com/
RedirectPermanent /ressources/index.php http*://www.scriptet.com/

(Ne pas oublier d'enlever les astérisques après chaque http)
Modifié par koala64 (06 Jan 2007 - 20:44)
Modérateur
Eh bien, il faut savoir qu'il y avait (en fait j'ai tout supprimé sur l'ancien site) d'autres dossiers que ceux que j'avais indiqué plus haut.
J'avais testé
RedirectPermanent /forum/index.php http*://nouveausite.free.fr/

Et ça fonctionnait uniquement si on ouvrait la page index.php mais pas pour toutes les autres (ce qui semble évident).

Je viens d'essayer autre chose (j'ai trouvé ça sur ovh)

J'ai placé les trois lignes suivantes dans le htaccess:
ErrorDocument 404  http://nouveausite.free.fr/
 
ErrorDocument 403  http://nouveausite.free.fr/
 
ErrorDocument 500  http://nouveausite.free.fr/
 

Mais ça ne redirige pas, ça évite le code erreur habituel, mais la racine de l'ancien site est ouverte. Smiley confus
Modérateur
ça y est ça marche (ne me demandez pas pourquoi). Je viens d'ajouter la ligne :
Deny from all

Et là ça fonctionne.

Je suppose que le fait de restreindre l'accès à tous produit une erreur 403 qui fait rediriger vers le nouveau site. J'ai dû oublier un code d'erreur pour que cela marche sans restriction d'accès...

Smiley ravi
Utiliser cette technique n'est pas la solution adéquate à ton problème bien qu'elle fonctionne très bien.

En effet, en indiquant que tu fais une restriction d'accès pour tous, cela ne signifie pas la même chose que de signaler que toute tes pages ont été déplacées.

D'un point de vue logique, il aurait fallu utiliser le deuxième type de redirection. De plus en utilisant la redirection permanente tu indiques aux moteurs de recherches ta nouvelle adresse. Ici ils ne vont pas fait suivre les anciens lien de ton site vers le nouveau.

Maintenant libre à toi de faire comme tu le sens et il est bien vrai qu'à ce casser la tête ont choisi souvent la première façon de faire qui fonctionne.
ON peut faire mieux en ajoutant ceci en haut tout début des nouvelles pages :

header("HTTP/1.x 200 OK");
header("Status:200 OK");

Ca permet d'éviter que le navigateur et les moteurs reçoivent le code HTTP 403 et y réagissent... p.ex. dialogue indiquant que l'accès est refusé (je n'ai jamais vu aucun navigateur le faire mais j'imagine que ça peut être une réaction un jour possible) ... et plus embêtants, les moteurs ne référence bien sûr pas les pages 403.

On peut sensiblement améliorer le truc en procédant un peu autrement :

1. Créer un nouveau dossier à la racine du compte FTP
2. Ajouter le .htaccess suivant à la racine :

ErrorDocument 403 /mondossier/index.php
deny from all

3. Ajouter le fichier .htaccess suivant dans le sous-dossier (ici mondossier) :

allow from all

4. Placer un fichier index.php dans le sous-dossier (mondossier) d'où tu pourras faire toutes les redirections comme tu le souhaites notamment à l'aide de header("Location:...");
Modérateur
QuentinC a écrit :

On peut sensiblement améliorer le truc en procédant un peu autrement


Merci pour ça, Smiley cligne
Je conserve dans mes marque-pages pour plus tard Smiley smile
Salut,

J'ai eu le même problème à régler pour mon site perso quand j'ai changé d'hébergeur. Parce que j'avais tout changé l'organisation des dossiers à cette occasion donc plus rien ne correspondait.

J'en suis arrivé à cette solution

. suppression de tout le contenu de l'ancien site
. reste deux fichiers .htaccess et page_erreur.php

.htaccess

ErrorDocument 400 /page_erreur.php
ErrorDocument 403 /page_erreur.php
ErrorDocument 404 /page_erreur.php



Et dans page_erreur.php

<?php header("Location: http*://www.clb56.fr"); ?>


Ce qui donne
http://clb56.freezee.org/blibli/blublu/tagada.php
Modifié par clb56 (07 Jan 2007 - 21:44)
Clb56 > OÛ as-tu trouvé cette syntaxe un peu particulière de l'en-tête HTTP Location ? Un tuto à recommander ?
hello Quentin Smiley cligne Bonne année ! Smiley smile

QuentinC a écrit :
Clb56 > OÛ as-tu trouvé cette syntaxe un peu particulière de l'en-tête HTTP Location ? Un tuto à recommander ?


Qu'est ce qu'elle a de particulier la syntaxe ?
Modifié par clb56 (07 Jan 2007 - 21:39)
Modérateur
Hello,

QuentinC a écrit :
Clb56 > OÛ as-tu trouvé cette syntaxe un peu particulière de l'en-tête HTTP Location ? Un tuto à recommander ?
Ben tu es dessus... Smiley lol
koala64, un peu plus haut, a écrit :
(Ne pas oublier d'enlever les astérisques après chaque http)