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 :

Redirection pour répertoires qui n'existent pas ou erreur 404


Sujet :

Apache

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2006
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2006
    Messages : 75
    Par défaut Redirection pour répertoires qui n'existent pas ou erreur 404
    Bonjour à tous,

    Je rencontre une difficulté avec l'utilisation d'un fichier .htaccess.
    Voici tout d'abord un petite mise en situation sur le fonctionnement du site.
    Il s'agit d'un site qui répertorie des agences et qui permet à chacune d'elle de disposer de son propre micro site Internet.

    J'ai donc deux agences, par exemple :
    Agence 1
    Agence 2

    Chaque agence a son propre site à l'adresse suivante (et je dois conserver ce format d'URL) :
    http://www.domaine.com/agences-1/
    http://www.domaine.com/agences-2/

    Et à l'adresse du domaine, sans répertoire derrière, il y a le site principal

    Mon système de réécriture d'URL est le suivant, mais je voudrais que tous les répertoires qui n'existent pas réellement sur le serveur et tous ceux qui ne sont pas des agences affichent une page d'erreur 404 personnalisée.

    J'ai un répertoire admin avec une règle adaptée, mais si on tape par exemple
    http://www.domaine.com/rep/ on arrive sur un page du site principale (qui ne devrait pas être visible) avec une mise en page incorrecte.

    J'espère que je suis assez clair ?
    Tout ce qui se trouve dans le fichier suivant fonctionne, sauf que je n'arrive pas à créer la règle que je viens de décrire. Si vous avez des idées, je suis preneur. Merci d'avance !
    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
     
    RewriteEngine on
    Options +FollowSymLinks
    #En local et distant
    RewriteRule ^page-([0-9a-z\-]+)-([0-9]+)-([0-9]+)\.php$ index.php?page_id=$2&langue=$3 [L]
    RewriteRule ^([0-9a-z\-]+)/page-([0-9a-z\-]+)-([0-9]+)-([0-9]+)\.php$ index-agence.php?agce_nom=$1&page_id=$3&langue=$4 [L]
    RewriteRule ^([0-9a-z\-]+)\/?$ index-agence.php?agce_nom=$1 [L]
    #Liste des biens sélectionnés
    RewriteRule ^([0-9a-z\-]+)\/nos-biens-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)\.php$ nos-biens.php?agce_nom=$1&page_id=$2&page=$3&langue=$4&classement=$5 [L]
    RewriteRule ^([0-9a-z\-]+)\/our-properties-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)\.php$ nos-biens.php?agce_nom=$1&page_id=$2&page=$3&langue=$4&classement=$5 [L]
    RewriteRule ^([0-9a-z\-]+)\/vendus-par-nos-soins-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)\.php$ nos-biens.php?agce_nom=$1&page_id=$2&page=$3&langue=$4&classement=$5 [L]
    RewriteRule ^([0-9a-z\-]+)\/sold-by-us-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)\.php$ nos-biens.php?agce_nom=$1&page_id=$2&page=$3&langue=$4&classement=$5 [L]
    #Fiche détaillée des annonces
    RewriteRule ^([0-9a-z\-]+)\/annonce-([0-9a-z\-]+)-([0-9]+)-([0-9]+)\.php$ annonce.php?agce_nom=$1&ance_id=$3&langue=$4 [L,QSA]
    #Permet l'accès à l'interface d'administration
    RewriteCond %{REQUEST_URI} !admin/index\.php(.*)$
    RewriteRule admin/index.php [L]

  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
    C'est à cause de la 3ème règle, à mon avis. Elle est censée servir à quoi ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2006
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2006
    Messages : 75
    Par défaut
    La 3ème règle permet d'afficher la page par défaut des sous-sites agences quand on saisit une adresse de type http://www.domaine.com/agence-1/ (sans préciser une page en particulier).

    Il est effectivement fort possible que ce soit cette règle qui soit à l'origine du problème que je rencontre, puisque quelque soit le répertoire que l'on saisit, la règle doit fonctionner, mais pour les agences qui n'existent pas, le code PHP ne trouve aucune correspondance dans la base de données... mais je ne sais pas comment contourner ça, à moins éventuellement de spécifier une règle pour chaque agence, mais c'est un peu galère puisque ça demande de modifier le fichier à chaque fois qu'on ajoute une agence...

  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
    Il suffit de vérifier, dans index-agence.php, que l'agence demandée existe et si elle n'existe pas, tu renvoies un code 404 avec le code HTML de ta page d'erreur ou bien tu rediriges explicitement (header("Location: ...")) le navigateur vers la page d'accueil du site ou une page d'erreur (mais dans ce dernier cas, le code d'erreur 404 n'est pas utiliser, ce que tu devrais faire).

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2006
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2006
    Messages : 75
    Par défaut
    Effectivement, mais je me suis mal exprimé dans ma réponse. Je peux effectuer cette vérification et ajouter une page erreur 404 personnalisée, mais le problème, c'est que si j'enlève la 3ème règle, la page index-agence.php n'est jamais exécutée. Sans cette règle, une adresse de type http://www.domaine.com/agence-1/ génère une erreur 404.

  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
    Est-ce que j'ai dit à un moment donné qu'il fallait supprimer cette 3ème règle ? Je ne crois pas : j'ai juste dit qu'elle était en cause. Ce que je dis c'est d'ajouter un truc en plus dans tout ce qui existe déjà : garde ton .htaccess et vérifie que l'agence existe dans ton fichier PHP.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/10/2007, 16h05
  2. Réponses: 3
    Dernier message: 14/08/2006, 19h13
  3. [SQL Server 2005] Selection de ce qui n'existe pas
    Par transistor49 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 20/04/2006, 09h20
  4. Réponses: 8
    Dernier message: 26/01/2006, 14h47
  5. Select qui n'existe pas
    Par daijoubu dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/01/2006, 18h34

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