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 :

[URL rewriting] Répertoires virtuels qui ne fonctionnent pas


Sujet :

Apache

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 151
    Par défaut [URL rewriting] Répertoires virtuels qui ne fonctionnent pas
    Bonjour,

    Je viens de passer un site d'un serveur de test à un serveur de production, et mes URL rewriting ne fonctionnent plus correctement, plus précisement celles avec des répertoires virtuels :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    AddDefaultCharset UTF-8
    Options +FollowSymlinks
    RewriteEngine on
    RewriteBase /
     
    # redirection automatique des recettes, articles soins et décos
    RewriteRule ^decoration/(.+)-([0-9]+).html$ /decoration.php?id=$2 [L]
    RewriteRule ^recette/(.+)-([0-9]+).html$ /recette.php?id=$2 [L]
    RewriteRule ^soin/([.+)-([0-9]+).html$ /soin.php?id=$2 [L]
     
    RewriteRule mentions-legales.html /article.php?id=3 [L]
    RewriteRule ou-nous-trouver.html /article.php?id=2 [L]
    RewriteRule qui-sommes-nous.html /article.php?id=1 [L]
    ErrorDocument  404  /index.php
    Les 3 dernières urls fonctionnent correctement (mentions-legales.html, ...), mais les 3 premières règles ne fonctionnent pas sur le serveur de prod (alors qu'elles fonctionnaient sans problème sur le serveur de test).
    Exemple, recette/nom-de-la-recette-15.html doit rediriger sur /recette.php?id=15.

    Si je ne mets pas de répertoire virtuel (genre : RewriteRule ^soin-([0-9]*).html$ /soin.php?id=$1 [L]), ça marche correctement.

    J'ai essayé plein de variantes, j'ai regardé pas mal de posts dans les forums, mais je n'arrive pas à trouver d'où vient le problème.

    PS : Le serveur de production se situe chez OVH, si ça peut aider.

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Et quel est le comportement/résultat des règles qui ne fonctionnent pas ? Serait-ce un problème lié à la négociation de contenu (Options -MultiViews) ?

    Parenthèse : le caractère point de l'extension, dans les règles, devrait être échappé. Et celle-ci est mal formée au niveau de la première parenthèse capturante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^soin/([.+)-([0-9]+).html$ /soin.php?id=$2

  3. #3
    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
    Citation Envoyé par julp Voir le message
    Serait-ce un problème lié négociation de contenu (Options -MultiViews) ?
    Il y a des chances, c'est un classique chez OVH.

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 151
    Par défaut
    Parenthèse : le caractère point de l'extension, dans les règles, devrait être échappé. Et celle-ci est mal formée au niveau de la première parenthèse capturante :
    Effectivement, une petite erreur de recopie.

    Et quels est le comportement/résultat des règles qui ne fonctionnent pas ?
    Vu qu'il n'a pas l'air de trouver la page, il redirige automatiquement vers la page index.php (directive ErrorDocument).

    Serait-ce un problème lié négociation de contenu (Options -MultiViews) ?
    Je viens juste de tester en ajoutant "Options -MultiViews" à la suite de la ligne "Options -FollowSymlinks", et tout marche nickel maintenant !
    Pour info, ca fait quoi, exactement, le MultiViews ? Je connaissais pas .

  5. #5
    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 fait partie de ce qu'on appelle la négociation de contenu : voir ici. Très grossièrement, c'est un mécanisme qui permet à Apache de trouver la ressource réellement demandée suivant certaines règles, comme par exemple en tenant compte de la langue de l'utilisateur : tu as 2 fichiers index.fr.html et index.en.html, mais l'utilisateur demande index.html dans son URL : ce fichier n'existe pas mais Apache regarde la langue demandée et en déduit que tu es français et donc envoie index.fr.html. Dans le cas présent, ce mécanisme prend le pas sur la réécriture : Apache veut absolument trouver un fichier et ne tient pas compte de RewriteRule.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 14
    Par défaut
    Cool, merci, j'avais le même soucis et il me cassait la tête !!!!

    Résolu

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

Discussions similaires

  1. [URL Rewriting] flag last [L] ne fonctionnant pas
    Par Yann_du_sud dans le forum Apache
    Réponses: 2
    Dernier message: 22/05/2008, 14h23
  2. Réponses: 12
    Dernier message: 26/03/2008, 20h00
  3. [URL Rewriting] Répertoires virtuels
    Par gb-ch dans le forum Apache
    Réponses: 5
    Dernier message: 17/10/2007, 14h49
  4. [URL Rewriting] répertoires virtuels
    Par kevinf dans le forum Apache
    Réponses: 6
    Dernier message: 13/10/2007, 22h54
  5. URL Rewriting - répertoire virtuel
    Par Samyhijodelaluna dans le forum Langage
    Réponses: 2
    Dernier message: 09/07/2007, 11h29

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