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] problème de réécriture


Sujet :

Apache

  1. #1
    Membre confirmé Avatar de gtraxx
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 043
    Points : 570
    Points
    570
    Par défaut [URL Rewriting] problème de réécriture
    Bonsoir tous le monde, j'ai utiliser une règle de réecriture assez classique pour une administration.
    Cependant j'ai essayer de cacher une partie de l'url avec celle-ci en réduisant simplement .
    J'ai une url comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://www.monurl/mapage?delcat=mondossier&delete=monimage.jpg
    J'ai besoin de la réecrire pour que cela soit valide pour les normes w3c et surtout pour l'esthetique.
    J'ai alors mis ceci dans le htaccess:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^monurl/mapage-([a-z]+)-([a-z]+)/{0,1}$         mapage.phtml?delcat=$1&delete=$2 [QSA,L]
    Problème sa ne fonctionne pas
    Une idée? je suis sur que je ne suis pas loin
    Au petit déjeuner, je prend du PHP et au souper du jQuery.
    AFUP 2009 : Bien optimiser son code pour le référencement
    Mon projet open source de librairie PHP 5: magix cjquery

  2. #2
    Expert éminent sénior

    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
    Points : 17 778
    Points
    17 778
    Par défaut
    Serait-il possible d'avoir un exemple (URL à réécrire et URL réelle de redirection : c'est bien de simplifier les URL dans l'énoncé mais là ça l'est vraiment trop) ainsi que l'emplacement du fichier .htaccess ?

    Sur une règle RewriteRule, seul le chemin est testé. Il est inutile d'y inclure le nom de domaine ou une autre partie (comme query string) ce qui conduirait à ne plus avoir de correspondance. Et {0,1} peut être simplifié par le quantificateur ?

    Avez-vous bien la possibilité d'utiliser la réécriture depuis un fichier htaccess sur votre serveur avant cela ?

  3. #3
    Membre confirmé Avatar de gtraxx
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 043
    Points : 570
    Points
    570
    Par défaut
    oui bien entendu que le .htaccess est pris en charge, puisque mes autre règles fonctionne parfaitement.
    C'est juste qu'ici j'ai deux variables a faire passer dans le get.
    Sur une règle RewriteRule, seul le chemin est testé. Il est inutile d'y inclure le nom de domaine ou une autre partie (comme query string) ce qui conduirait à ne plus avoir de correspondance. Et {0,1} peut être simplifié par le quantificateur ?
    Je le sais bien je ne l'inclus pas, en fait j'aurai du dire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^mapage-([a-z]+)-([a-z]+)/{0,1}$         mapage.phtml?delcat=$1&delete=$2 [QSA,L]
    Le htaccess est a la racine du site et j'ai pour l'instant une url comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://www.monurl/mapage?delcat=mondossier&delete=monimage.jpg
    il me faut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://www.monurl/mapage/mondossier/monimage.jpg
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://www.monurl/mapage/mondossier-monimage.jpg
    ou autre chose mais je souhaite simplement un truc valide , propre pour le validateur w3c
    Au petit déjeuner, je prend du PHP et au souper du jQuery.
    AFUP 2009 : Bien optimiser son code pour le référencement
    Mon projet open source de librairie PHP 5: magix cjquery

  4. #4
    Expert éminent sénior

    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
    Points : 17 778
    Points
    17 778
    Par défaut
    Il manque le caractère point dans votre seconde classe pour qu'il y ait correspondance ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^mapage[/-]([a-z]+)[/-]([a-z.]+)$ ...
    A moins d'être moins strict sur les classes (ie utiliser [^/-] par exemple). Eventuellement l'option [NC], pour ne pas tenir compte de la casse, sera peut être à envisager ici.

  5. #5
    Membre confirmé Avatar de gtraxx
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 043
    Points : 570
    Points
    570
    Par défaut
    Cela me renvoi une erreur 404 ?
    j'ai indiquer ceci dans mon véritable fichier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^admin/filemanager[/-]([a-z]+)[/-]([a-z.]+)$         _dynamicroot/backend/filemanager/index.phtml?delcat=$1&delete=$2 [QSA,L,NC]
    l'url réel est de ce style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://www.monsite/admin/filemanager-icones-video.png
    Au petit déjeuner, je prend du PHP et au souper du jQuery.
    AFUP 2009 : Bien optimiser son code pour le référencement
    Mon projet open source de librairie PHP 5: magix cjquery

  6. #6
    Expert éminent sénior

    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
    Points : 17 778
    Points
    17 778
    Par défaut
    Une erreur 404, mais qui en est à l'origine ? Il n'y a pas de réécriture ou bien c'est la page de redirection qui n'est pas trouvée ? (voir les journaux et il faudrait envisager d'activer celui de la réécriture - RewriteLog + RewriteLogLevel)

    De mon côté ça paraît fonctionnel, puisque voilà ce qu'affiche le script vers lequel sont redirigées vos URL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Array
    (
        [delcat] => icones
        [delete] => video.png
    )

  7. #7
    Membre confirmé Avatar de gtraxx
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 043
    Points : 570
    Points
    570
    Par défaut
    Voila l'erreur dans le log:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    [Sun Feb 24 02:15:07 2008] [notice] cannot use a full URL in a 401 ErrorDocument directive --- ignoring!
    [Sun Feb 24 02:20:40 2008] [error] [client 127.0.0.1] File does not exist: /opt/lampp/htdocs/monsite/admin, referer: http://www.monsite.dev/admin/filemanager?num=2
    Au petit déjeuner, je prend du PHP et au souper du jQuery.
    AFUP 2009 : Bien optimiser son code pour le référencement
    Mon projet open source de librairie PHP 5: magix cjquery

  8. #8
    Expert éminent sénior

    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
    Points : 17 778
    Points
    17 778
    Par défaut
    L'erreur montrée n'est en rien liée (étant donné la forme de l'URL, il n'y aura jamais correspondance avec la règle).

    De manière générale, une erreur 404 par rapport à la réécriture, comme je le disais, peut provenir :
    • De l'absence de réécriture. Les raisons peuvent être :
      • la réécriture n'est pas active à cet endroit (il peut manquer RewriteEngine On et/ou une options pour suivre les liens symboliques - ce dernier cas étant explicitement indiqué dans le journal d'erreur)
      • l'URL demandée ne subit pas la réécriture car elle ne correspond pas au motif
    • le chemin vers lequel est redirigée l'URL réécrite est erroné

    Sans l'option R au niveau de la règle RewriteRule, il faut se baser sur le journal de la réécriture pour le déterminer (après l'avoir mis en place).

Discussions similaires

  1. Réponses: 7
    Dernier message: 20/12/2007, 11h52
  2. Réponses: 3
    Dernier message: 31/07/2007, 16h40
  3. [URL Rewriting] problème avec sous domaine
    Par Booyakha dans le forum Apache
    Réponses: 1
    Dernier message: 31/07/2007, 16h31
  4. URL Rewriting problème de regexp ?
    Par pierrickg dans le forum Apache
    Réponses: 2
    Dernier message: 10/07/2007, 13h35
  5. [URL Rewriting] Problème URL Rewriting -> CSS
    Par Cartman.inc dans le forum Apache
    Réponses: 8
    Dernier message: 23/04/2007, 14h29

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