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

Apache Discussion :

1&1 Particularité htaccess Rewriting + Erreur perso


Sujet :

Apache

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 13
    Par défaut 1&1 Particularité htaccess Rewriting + Erreur perso
    Bonjour,

    J'ai pris un hébergement chez 1&1 pour mon site et malheureusement tous ne fonctionne pas comme en local. Notamment aux niveaux de la redirection 404 si l'utilisateur va sur une page qui n'existe pas. Le navigateur charge puis finis par m'indiquer La page n'est pas redirigée correctement. Sachant que la réécriture d'url fonctionne bien.

    Je rappel qu'en local tous marche bien, voilà mon .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
     
    Options +FollowSymLinks
    RewriteEngine On
    RewriteBase /
     
    # Réécriture simple des pages principales                                                        
     
    RewriteRule services/([a-zA-Z0-9\-]+).html                           index.php?p=$1
    RewriteRule contact/([a-zA-Z0-9\-]+).html                            contact.php?p=$1
     
    RewriteRule enseignement/([a-zA-Z0-9\-]+).html                       secteur.php?p=$1
     
    RewriteRule formation/([a-zA-Z0-9\-]+).html                          secteur.php?p=$1
    RewriteRule formation/([a-zA-Z0-9\-]+)/([a-zA-Z0-9\-]+).html         secteur.php?p=$1&r=$2
     
    RewriteRule conseil/([a-zA-Z0-9\-]+).html                            secteur.php?p=$1 
    RewriteRule conseil/([a-zA-Z0-9\-]+)/([a-zA-Z0-9\-]+).html           secteur.php?p=$1&r=$2
     
    # Erreur prévu 
    RewriteRule erreur/([0-9]+).html                                     erreur.php?p=$1
    # --------------
    # Erreur général
     
    ErrorDocument 403  http://site.fr/erreur/403.html
    ErrorDocument 404  http://site.fr/erreur/404.html
    Et voilà la manière dont je fais ma redirection sur le 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    <?php
     
    // Inclusion de RACINE_URL
    if(isset($_GET['p']) && !empty($_GET['p'])){
     
        $p = htmlspecialchars($_GET['p']);
     
       // Pages autorisées 
        $pages_autorisees = array('index'           => array('Accueil', 'page/index.php'),
     
                                  'page2'    => array('page2', 'page/page2.php') 
     
                                   // ....
     
                                  );
     
     
     
        if(array_key_exists($p, $pages_autorisees)){
     
        // Vérifications
     
        }
     
        else{ // Si la page n'est pas autorisée
     
             header('location:'.RACINE_URL.'erreur/404.html');
     
        }   
     
    }
     
    else
     
    header('location:'.RACINE_URL.'services/index.html');

    Voilà, merci de votre aide smile

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Rassure-moi : 404 est bien une entrée de ton tableau $pages_autorisees ? Si ce n'est pas le cas, l'erreur s'explique : sur une première erreur 404, le navigateur demande la page /erreur/404.html qui redirige de nouveau sur /erreur/404.html qui redirige de nouveau sur /erreur/404.html, et ainsi de suite.

    Pour info, ton code PHP de redirection n'est pas parfait : Location s'écrit avec un L majuscule et il y a un espace après le ":" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Location: '.RACINE_URL.'erreur/404.html');

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 13
    Par défaut
    Merci pour ta réponse.

    Je vais revoir mes locations, merci du tuyaux.
    Le soucis c'est que mon script fonctionne en local...

    Voilà ma page erreur.php au cas où :

    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
    <?php
    include("lib/controleur/config.php");
     
    if(isset($_GET['p']) && !empty($_GET['p'])){
     
        $p = htmlspecialchars($_GET['p']);
     
     
    autorisées : Titre des pages (Indice 0) => Lien vers la vue (Indice 1)
     
        $pages_autorisees = array('403'           => array('Erreur 403 : Accès interdit', 'erreur/403.php'),
     
                                  '404'           => array('Erreur 404 : Page introuvable', 'erreur/404.php')
     
                                  );
     
     
     
        if(array_key_exists($p, $pages_autorisees)){
     
     
            $inclure = 'lib/vue/'.$pages_autorisees[$p][1];
     
        }
     
        else{
     
             header('location:'.RACINE_URL.'erreur/404.html');
     
        }   
     
    }
     
    else{
     
        header('location:'.RACINE_URL.'services/index.html');
     
    }
     
    ?>

  4. #4
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Très étrange. Je ne comprends pas trop ce qu'il se passe. Souvent, les différences de réécriture entre serveurs peuvent s'expliquer par la négociation de contenu qui est activée ou désactivée sur un serveur et pas sur l'autre. Je te propose donc d'essayer 2 choses :
    1. Tester l'option -MultiViews :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      Options +FollowSymLinks -MultiViews
    2. Tester l'option +MultiViews :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      Options +FollowSymLinks +MultiViews

    Si aucune des deux solutions ne passe, peux-tu nous donner une URL pour tester ? Il faut qu'on sache quelle "redirection non correcte" le navigateur reçoit pour essayer de comprendre par où les choses passent.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 13
    Par défaut
    Alors là ! Tout simplement un grand merci !
    J'ai dû utiliser l'option -MultiViews, +MultiViews ne fonctionne pas.

    Pourrais-tu m'expliquer se qu'il s'est passé ? Et à quoi sert vraiment Multiviews ? Je ne trouve pas grand chose sur MultiViews sur google.

  6. #6
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Ca sert à activer ou désactiver la négociation de contenu. Lis la doc mais pour simplifier c'est un mécanisme qui sert à Apache à "deviner" ce qu'on lui demande alors que la requête n'est pas précise. Par exemple, Apache va faire des corrections relatives à la casse du nom des fichiers.

    Ce truc là est pas mal sauf qu'il rentre très souvent en conflit avec la réécriture d'URL car ça a précédence. Mais dans ton cas, je ne vois pas pourquoi il y a conflit.

    Les hébergeurs chez lesquels on rencontre souvent le problème sont 1&1 et OVH (l'option est activée par défaut).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. rewriting / Erreur d'URL.. un résultat étonnant
    Par Joe Le Mort dans le forum Dépannage et Assistance
    Réponses: 2
    Dernier message: 10/08/2006, 09h09
  2. Réponses: 2
    Dernier message: 31/01/2006, 21h18
  3. [Système] Erreur perso
    Par Anduriel dans le forum Langage
    Réponses: 15
    Dernier message: 15/01/2006, 12h32
  4. htaccess et erreur 404 = resultat aleatoire : (
    Par NoobX dans le forum Apache
    Réponses: 7
    Dernier message: 02/10/2005, 12h52
  5. message d'erreur perso lors fin de session
    Par zorba49 dans le forum ASP
    Réponses: 1
    Dernier message: 26/08/2005, 11h12

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