IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Redirection, ca ne marche pas depuis une page 404 ?


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut Redirection, ca ne marche pas depuis une page 404 ?
    Bonjour à tous

    tout est dans le sujet.

    J'ai redirigé mes URL non valides sur /404.php. Tout est OK pour cette redirection ci.

    Et dans cette page /404.php, je souhaite rediriger vers une autre page en fonctions de certains param. (notamment l'URL initiale tapée).
    Cette page, est valide cette fois ci bien sur.

    Mais aucune des 3 méthodes ne fonctionne de la FAQ:
    http://php.developpez.com/faq/?page=...ts_redirection

    Je me pose la question,
    vu que l'arrivée sur /404.php fait déjà office de résultat de redirection, est-il possible de rediriger une fois encore ???

    Merci d'avance
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 137
    Par défaut
    Ta première redirection, tu l'as fais comment ?

  3. #3
    Membre éprouvé
    Homme Profil pro
    Ingénieur réseau et sécurité / Consultant
    Inscrit en
    Août 2005
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur réseau et sécurité / Consultant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 1 068
    Par défaut
    louche que sa ne marche pas...

  4. #4
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    Ma 1ere redirection est classique

    dans mon .htaccess
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ErrorDocument 404 /404.php
    dans mon /404.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <?php 
    $dns = $_SERVER['HTTP_HOST'];
    $chemin = $_SERVER['REQUEST_URI'];
    $urlvalide = //un trt qui me donne une URL valide (bien vérifié!);
    header( 'Location: ' . $urlvalide);
    ?>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
     
    <head>
    <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
    </head>
     
    <body>
    du contenu
    </body>
    </html>
    et il m'affiche mon contenu derriere.
    A noter, que par la suite, la redirection sera soumise à conditions, c'est pour cela que j'ai du contenu derriere.

    J'ai essayé également avec un script Java, à l'interieur du code php (avec des echos, c'est comme ca qu'il faut faire ??) et avec le script java dans la body

    rien n'y fait,
    soit j'arrrive sur mon contenu
    soit j'ai une page 404 non gérée par moi ...

    merci pour la rapidité en tout cas !
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 137
    Par défaut
    Mais si tu met des headers dans tes conditions, tu as quoi ? Une erreur ? Une mauvaise redirection ? Rien du tout ?

  6. #6
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    je met

    pour l'instant je n'ai aucune condition, (la condition je verrais par la suite).

    je force la redirection avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    header( 'Location: ' . $urlvalide );
    echo 'apres header';
    et là, j'ai 'après header' qui s'affiche en haut de la page (puisque le code php est avant tout), puis le contenu de ma page, comme si le header était ignoré.

    Je l'enleverrai que ca ne changerais rien.
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 137
    Par défaut
    Il ne faut aucuns affichages avant ton header.

    Essaye de le placer tout en haut de ta page pour voir si ca fonctionne.

  8. #8
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    voici le début de mon fichier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php 
    header( 'Location: http://www.xxx.com/xxx/index.php' );
    ?>
     
     
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
     
    ETC...
    Résultat: j'ai l'affichage de mon contenu dessous...

    Mais j'ai comme l'impression que j'ai un pb. de redirection de base qd même, car si dans mon fichier 404.php, je vide absolument tout, et que je laisse une simple chaine de car. 'coucou'

    le 'coucou' n'est pas affiché et je retombe sur une 404 classique...

    J'en ai marre je comprends plus rien là...

    Un coup, mon contenu de mon 404.php est affiché, un coup il ne l'est plus.
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  9. #9
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    oula, et en fait
    IE et FireFoxe réagissent différement par rapport a cette page vide uniquement avec une chaine.

    fireFox me l'affiche bien , pas IE.....
    me demande si c'est pas un pb de cache...

    Bon le pb doit donc venir d'autre part donc pas la peine de chercher une erreur qui n'en est pas une certainement! je vais d'abord bucher sur celui là

    a++ et merci!
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  10. #10
    Membre émérite Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Par défaut
    Il faut impérativement un exit(); après une redirection.

  11. #11
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    j'ai essayé le exit.. sans succés, résumé

    avec un 404.php comme ceci (et rien d'autre)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    header( 'Location: http://www.xxx.com/xxx/index.php' );
    exit(); // avec ou sans ca change rien ici mais je comprends le principe
    ?>
    en tapant une URL invalide:
    --> IE , page 404 classique
    --> FireFox, page blanche



    avec un 404.php comme ceci (et rien d'autre)

    en tapant une URL invalide:
    --> IE, page 404 classique
    --> FireFox, 'un texte simple' est bien affiché

    Ca commence à me prendre la tête cette histoire
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  12. #12
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    Oui alors là....

    Par défaut IE a une option se nommant

    "Afficher des messages d'erreur HTTP simplifié"

    dans les options avancés. Je l'ai trouvée cochée.

    Je décoche ca, et il m'affiche correctement ma page 404.php tout simple.... comme Firefox...

    Après quelque recherche, je m'apercoit que je suis pas le seul à être tombé sur ce problème.

    pas cool tout ca, pas cool

    ca m'explique toujours pas, par contre, pourquoi ma redirection ne se fait pas
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  13. #13
    Membre émérite Avatar de Yobs
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    675
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 675
    Par défaut
    T'as essayé de remplacer ta variable $urlvalide par un url valide?

  14. #14
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    oui Yobs, url absolu tout ce qu'il y a de bien valide

    MAIS je reviens à la charge car je trouve vraiment ca trop fort de la part de microsoft.
    En allant manger et en repensant à tout ca (je sais on s'en fout),

    J'ai trouvé, et vérifié mes doutes !!!

    Avec la fameuse option IE cochée par défaut (citée + haut)

    J'ai souligné que la page 404.php était affichée correctement avec FireFox mais pas avec IE.
    IE fait visiblement un test sur la taille physique du fichier 404.php.
    Enfin, pas "visiblement", c'est même sur

    Dans mon 404.php, j'ai mis du texte et c'est tout. (pas de balises rien)

    SI la taille de 404.php est <512 octets,
    -ALORS IE prend le relai et affiche sa propre page 404
    -SINON IE affiche et traite correctement ma page 404.php

    c'est pas beau ca ???

    vu que dans mes tests de redirection, tanto il y avait du code tantot non, et que le fichier parfois dépassait cette limite, des fois non --> prise de tête avec des résultats en erreurs aléatoires.

    Si il y en a a qui c'est déjà arrivé, ca me réconforterait.
    J'ai essayé sur 2 IE différents, pareil...

    EDIT:
    Après une courte recherche sur le net
    http://www.apachefrance.com/Articles/7/page3.html

    Note pour les utilisateurs d'Internet Explorer

    Internet Explorer 5 et supérieur incluent des pages d'erreur standards présentées à l'internaute si le site Web ne propose pas de pages personnalisées OU si la taille de ces pages est inférieure à une certaine taille en octets (256 ou 512 selon le cas).

    Pour contourner ce "problème", vous pouvez soit compléter la page d'erreur avec des commentaires HTML afin d'atteindre 512 octets, soit opter pour l'une des deux modifications suivantes dans Internet Explorer :
    • Dans les options d'Internet Explorer, onglet "Avancés", décocher la case "Afficher des messages d'erreur HTTP simplifiés",
    • Dans la base de registre, rechercher le dossier HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\ErrorThresholds. Vous trouverez alors plusieurs entrées correspondant à un code HTTP et la taille de page minimum attendue pour afficher la page du site plutôt que la page interne d'IE.

    Référence : Description des messages d'erreur HTTP, Microsoft.
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  15. #15
    Membre émérite Avatar de Yobs
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    675
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 675
    Par défaut
    essaye une autre valeur pour header pour voir si sa vient de ta fonction header ex: header("HTTP/1.0 403 Forbidden") pour générer une erreur 403.

  16. #16
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    Not Found
    The requested URL /pro/fr/produits.htm was not found on this server.

    Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request.
    Apache/1.3.34 Server at www.xxx.fr Port 80
    C'est ce que ca doit renvoyer ?

    Mais j'ai qd même l'impression que je suis bloqué.
    Car si je fais un redir avec header
    1. je ne dois faire aucun echo avant -> 0 octet de pris
    2. il n'y a aucun echo après, car je fais exit() apres le header()
    --> au final la taille de la page générée < 512 octets, donc msg 404 de IE.

    Alors, ca tient pas debout, puis le code et la redirection sont faite normalement AVANT que la page ne soit livrée à IE non ?

    En attendant, je sens que je vais me rabbattre sur la balise <meta http-equiv="refresh", non pas que ca me remplisse de joie...

    Edit:
    Derniere tentative

    code du fichier 404.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    header( "Location: http://www.google.fr" );
    exit();
    ?>
    non executé que ce soit dans IE ou FireFox (page 404 windows)
    pourtant si, je remplace ce code, par du blahblah > 512 octets, la page s'affiche correctement...
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  17. #17
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    Voila mon code entier de ma page 404.php

    La redirection HTML fonctionne correctement (testé et retesté).

    Pour tester la redirection via PHP, je retire tout le code entre Début/Fin HTML, et j'enlève le commentaire sur Header( ... ).

    IE -> 404 de windows
    FireFox -> page blanche.

    Ai-je un problème dans mon code ? (vu que je suis novice dans ce langage, je me pose quand même la question )

    Sinon, cela signifie que l'on ne peut pas rediriger en php, sur une page 404 déjà redirigée grace au .htaccess.....


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    <?php 
     
    // Inits
    $dns = $_SERVER['HTTP_HOST'];
    $chemin_et_param = $_SERVER['REQUEST_URI'];
    $chemin_temp = explode( '?', $chemin_et_param );
    $chemin = $chemin_temp[ 0 ];
     
    // Choix décalage
    if ( $dns == 'www.xxx.fr' ) $decalage = '/xx'; 
    if ( $dns == 'www.yyy.com' ) $decalage = '/yy'; 
    if ( $decalage == '' ) exit();
     
    // Redirection ou page d'accueil
    if ( is_readable( '.' . $decalage . $chemin ) )
      $redir = $dns . $decalage . $chemin_et_param;
    else
      $redir = $dns;
     
    // header( 'Location: http://' . $redir ); // MARCHE PAS !
     
    // DEBUT HTML
    echo( '<html><head>' );
    // redirection html
    echo( '<meta http-equiv="refresh" content="0;url= ' );
    echo( 'http://' . $redir );
    echo( '">' );
    // page d'attente
    echo( '</head><body>' );
    echo( 'Un instant s.v.p.<br>' );
    echo( 'Please wait a moment<br><br><br>' );
    echo( 'redirection vers:   ' . $redir . '<br><br>');
    //echo( 'URL demandée: ' . $chemin_et_param . '<br><br>' );
    //echo( 'chemin testé: ' . $decalage . $chemin . '<br><br>' );
    // remplissage pour pb IE 512 octets
    echo( '
    <small style="color: rgb(255, 255, 255);"><small><small><small><small><small><small><small>
    fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill<br>
    fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill<br>
    fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill<br>
    fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill<br>
    fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill<br>
    fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill<br>
    fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill<br>
    fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill<br>
    fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill<br>
    fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill<br>
    fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill<br>
    fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill<br>
    fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill<br>
    fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill<br>
    fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill fill<br>
    </small></small></small></small></small></small></small></small>
    ');
    echo( '</body></html>' ); 
    // FIN HTML
     
    ?>
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

Discussions similaires

  1. Tri ne marche pas dans une datagrid remplie depuis une BDD
    Par TrexXx dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 15/01/2011, 16h42
  2. Redirection depuis une page contenue dans un IFrame
    Par sylvebarbe78 dans le forum ASP.NET
    Réponses: 0
    Dernier message: 28/04/2009, 08h59
  3. Réponses: 1
    Dernier message: 22/06/2008, 22h47
  4. Ma redirection ne marche pas si la page existe !
    Par pdtor dans le forum Apache
    Réponses: 1
    Dernier message: 07/08/2007, 21h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo