8791 sujets

Développement web côté serveur, CMS

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

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 :


<?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 Smiley smile
Oui, le script marche parfaitement en local, mais voilà ma page erreur.php au cas où :

<?php
include("lib/controleur/config.php");

if(isset($_GET['p']) && !empty($_GET['p'])){
    
    $p = $p = htmlspecialchars($_GET['p']);
    
    // Pages 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');
}
?>

Modifié par Sorow (25 Apr 2012 - 22:54)
Selon le DocumentError dans le htaccess oui, en local encore une fois ca marche. C'est en ligne que la redirection n'est apparemment pas correcte...