Redirection figée

Fermé
phoenix420 Messages postés 5 Date d'inscription mercredi 11 décembre 2013 Statut Membre Dernière intervention 12 décembre 2013 - 11 déc. 2013 à 11:47
 incodr - 12 déc. 2013 à 13:42
Bonjour,

J'ai suivi votre tutoriel pour effectuer une redirection vers une page PHP.
Seulement, j'ai fait une erreur dans le chemin vers la page en question. J'ai mis un chemin absolu erroné.

Exemple : j'ai créé mon fichier PHP de redirection 'redirect.php' à l'emplacement /racine/parent1/redirect.php.

J'ai mis

header('Status: 301 Moved Permanently', false, 301);
header('Location: /racine1/parent1/parent2/mapage.php');

Alors que normalement on accède au serveur web à partir de 'parent2'.

Quand j'essaie d'accéder à /racine/parent1/redirect.php, j'ai une erreur de type 404.

J'ai beau modifier les header dans mon fichier redirect.php, l'erreur persiste.

Comment revenir à l'état initial ou comment effectuer ma redirection correctement ?

Merci beaucoup.

7 réponses

Bonjour,

Votre page "redirect.php" est bien accessible par défaut ? (sans redirection)
Vous pouvez faire un <?php echo "Ca marche!" . "<br />"; ?> pour vérifier.

Agissez par étape:
1- Mettez votre script PHP "redirect.php" à la racine de votre application.
2- Mettez la page ciblée dans le même dossier ou des sous-dossiers.
3- Puis pour la redirection, procédez ainsi:

header('Location: chemin_vers_cible');
exit;

Pensez également à bien mettre "exit" après la commande header afin que la page se quitte bien.

Cordialement.
0
phoenix420 Messages postés 5 Date d'inscription mercredi 11 décembre 2013 Statut Membre Dernière intervention 12 décembre 2013
11 déc. 2013 à 14:29
Merci pour cette réponse rapide !

J'avais effectivement mis 'exit();' en fin de script.

Bizarrement le script semble fonctionner de lui-même maintenant ...
J'avais peut-être un problème de cache à vider.

Mais cela fonctionne désormais.

Merci beaucoup :)
0
phoenix420,

Tout va pour le mieux alors :) Oui, pensez à vider votre cache, j'ai eu beaucoup de problèmes avec ça dans mon expérience^^

Bonne journée :)
0
phoenix420 Messages postés 5 Date d'inscription mercredi 11 décembre 2013 Statut Membre Dernière intervention 12 décembre 2013
11 déc. 2013 à 15:50
En fait mon problème n'est pas résolu ... Cela semblait fonctionner à nouveau mais le problème est revenu.

Mon fichier 'redirect.php' est bien dans le dossier qu'il faut, mais c'est comme s'il n'était pas trouvé.
Si j'en fais au copie renommée en 'redirectCopie.php' que je mets dans le même dossier, elle est reconnue !

En fait, maintenant je suis obligé de mettre mon script 'redirect.php' là où il était lorsqu'il contenait les lignes de redirection.
Si je modifie le contenu de 'redirect.php', ne serait-ce qu'avec un simple affichage de "Hello", le script doit impérativement être placé dans le dossier spécifié lorsqu'il contenait des commandes de redirection.

Où est-ce que cette association du script avec son emplacement est stockée sur le serveur ?
Peut-être modifier une redirection permanente après l'avoir effectuée ?! :-/
0
Bonsoir phoenix420,

Ah mince !! Le problème persiste :p

Pour éclaircir la situation au mieux, pourriez-vous m'indiquer les éléments ci-dessous:
- Répertoire racine et son contenu (linux: pwd & ls -la)
- Répertoire contenant le "redirect.php"
- Répertoire contenant la cible de "redirect.php"
- Lien web par lequel vous accédez au script PHP
- Le problème de base

Je pourrai mieux comprendre le problème après avec ces informations car votre deuxième explication est un peu confuse :p (désolé^^)

Cordialement.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
phoenix420 Messages postés 5 Date d'inscription mercredi 11 décembre 2013 Statut Membre Dernière intervention 12 décembre 2013
Modifié par phoenix420 le 12/12/2013 à 11:12
Bonjour.

Oui bien sûr ! Désolé si j'ai du mal à bien expliciter mon problème.
Voilà les infos demandées :



racine
|
|
------> parent 1
| |
| |
| ---------> parent 2
| |
| ---------> parent 3




Au départ, j'avais mis mon fichier 'redirect.php' dans le répertoire 'parent1'.
J'avais donc le chemin absolu suivant : '/racine/parent1/redirect.php'.

J'avais également mon script PHP 'mapage.php' vers lequel je souhaite que l'utilisateur soit redirigé et que j'avais mis dans le répertoire 'parent2'.
J'avais donc le chemin absolu suivant : '/racine/parent1/parent2/mapage.php'

Dans 'redirect.php' j'avais indiqué :


<?PHP
header('Status: 301 Moved Permanently', false, 301);
header('Location: /racine1/parent1/parent2/mapage.php');
exit;
?>

Quand on veut accéder à un script sur le serveur web, il faut placer les scripts dans le répertoire 'parent1'.

J'accède donc à mon script 'redirect.php' par le lien type suivant :

'serveur/parent1/redirect.php'

Mon problème est le suivant : j'ai modifié l'emplacement du script 'mapage.php'. Au lieu de mettre '/racine1/parent1/parent2/mapage.php' il faudrait donc avoir '/racine1/parent1/parent3/mapage.php'.

Mais c'est comme si la redirection permanente n'était plus modifiable.
Quand je modifie ma ligne portant sur la redirection, la redirection m'affiche une erreur de type 404. Comme si le serveur cherchait encore ma page PHP dans le dossier 'parent2', et il ne la trouve pas bien entendu puisque je l'ai mise dans le dossier 'parent3'.

Par contre, si je copie 'redirect.php' (avec la ligne de redirection modifiée vers 'parent3'), que je le renomme (par exemple en 'newredirect.php') et que je le mets dans le même répertoire que 'redirect.php', si j'accède à ce nouveau fichier de redirection par

'serveur/parent1/newredirect.php'

La redirection est prise en compte ! Et je suis bien redirigé vers 'mapage.php', alors que le contenu de 'redirect.php' et 'newredirect.php' est identique ! Mais avec 1er j'obtiens l'erreur 404, avec le 2nd je suis bien redirigé.

C'est donc comme si ma première redirection permanente était figée et non modifiable ...

J'espère avoir été plus clair =)
0
Bonjour phoenix420,

En effet, vous êtes beaucoup plus clair !! :) Merci bien.

Alors à première vu, d'après ce que vous renseignez, techniquement c'est bon !
De plus, vous avez créé votre page "newredirect.php" qui elle illustre bien que votre déplacement de fichier et la modification de header fonctionnent.

Sans m'engager, j'opterai pour le cache... Je pense que la première instruction header définit au navigateur de prendre l'url du deuxième header.
De ce fait, à une nouvelle connexion du visiteur, la redirection est faite sans relire le script puisque le navigateur détourne le visiteur sur le lien en question. Je ne suis pas certain des propos précédemment dit, il faudrait faire le test ci-dessous.
[A confirmer !]

Faite ce test:
1- Supprimer le cache de votre navigateur et redémarrez votre navigateur (pour killer la session);
2- Commentez la ligne: header('Status: 301 Moved Permanently', false, 301) et vous connecter sur le site;
3- Est-ce que ça marche ?

Si oui, je pense que vous pouvez enlever la première car elle ne me semble pas indispensable (je ne l'ai jamais utilisée personnellement).
Si non, quel lien s'affiche sur votre navigateur lorsque l'erreur 404 survient ?

Cordialement.
0
phoenix420 Messages postés 5 Date d'inscription mercredi 11 décembre 2013 Statut Membre Dernière intervention 12 décembre 2013
12 déc. 2013 à 13:36
J'ai remanié le script 'redirect.php' en une page de Login pour le moment.
Je le réécrirai une fois que mon outil sera terminé pour en faire un script de redirection.

La première ligne (que vous n'avez jamais utilisée), je l'ai trouvée sur Internet. C'est pour créer une redirection permanente et surtout que la page finale soit référencée par Google par exemple, et pour l'URL soit plus courte au final.
0
Oui mais techniquement voyez bien que cette fonction a plusieurs rôles.

Je n'exclurai pas le fait que lorsque vous accédez une première fois dans le navigateur, le script s'exécute bien et que la seconde fois, il aille directement sur l'adresse "settée" au préalable.

source: http://www.aidoweb.com/tutoriaux/les-redirections-php-utilisation-header-location-806
(Chapitre: Redirection 301 : Redirection définitive)

Si ça peut vous aider, j'espère ne pas vous induire en erreur.
Mais lorsque vous utilisez des fonctions, soyez sûr des paramètres envoyés et de la fonctionnalité exacte de celle-ci.

Cordialement :)
0