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 et tirets


Sujet :

Apache

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 11
    Points : 6
    Points
    6
    Par défaut URL rewriting et tirets
    Bonjour,

    J'essaie en vain de réécrire les urls de mon site du style:

    /view.php?section=SECTION&categorie=CATEGORIE&id=ID&titre=TITRE-AVEC-TIRET
    en
    /SECTION-CATEGORIE-ID-TITRE-AVEC-TIRET.html

    J'ai des pages différentes du genre sans CATEGORIE : /view.php?section=SECTION&id=ID&titre=TITRE-AVEC-TIRET

    Voici le .htaccess:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    # Page avec Section :
    RewriteRule ^([a-zA-Z0-9\-]+)\.html$   /view.php?section=$1 [L]
     
    # Page avec Section et Catégorie :
    RewriteRule ^([a-zA-Z0-9\-]+)-([a-zA-Z0-9\-]+)\.html$   /view.php?section=$1&categorie=$2 [L]
     
    # Page avec Section Titre et ID mais sans Catégorie :
    RewriteRule ^([a-zA-Z0-9\-]+)-([0-9]+)-([a-zA-Z0-9\-]+)\.html$   /view.php?section=$1$id=$2&titre=$3 [L]
     
    # Page avec Section Catégorie Titre et ID :
    RewriteRule ^([a-zA-Z0-9\-]+)-([a-zA-Z0-9\-]+)-([0-9]+)-([a-zA-Z0-9\-]+)\.html$   /view.php?section=$1&categorie=$2&id=$3&titre=$4 [L]
    Mon problème est que les variables ne sont pas récupérés dans ma page mais lorsque je remplace :
    /SECTION-CATEGORIE-ID-TITRE-AVEC-TIRET.html
    en
    /SECTION_CATEGORIE_ID_TITRE-AVEC-TIRET.html

    Cela fonctionne... hors je ne veux pas d'underscore.

    Que dois-je modifié? merci d'avance.

  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
    Points : 12 977
    Points
    12 977
    Par défaut
    C'est évident : l'expression régulière ([a-zA-Z0-9\-]+) est équivalente à ([a-zA-Z0-9\-]+)-([a-zA-Z0-9\-]+) parce qu'elle contient le séparateur, donc tes deux dernières règles sont strictement équivalentes. En gros, il faut spécialiser un peu plus tes filtres si c'est possible ou alors utiliser un autre séparateur qui ne figurera pas dans les [...]+.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Merci de ta réponse,

    Je ne vois pas trop ce que je pourrais ajouter à mes filtres. Je débute depuis ce matin dans l'url rewriting et les expressions régulières donc je ne maîtrise pas tout encore...
    Je voulais absolument mettre des tirets comme la plupart des sites.

  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
    Points : 12 977
    Points
    12 977
    Par défaut
    Si SECTION et/ou CATEGORIE ne contiennent pas de -, tu peux les retirer de tes []. Si ce n'est pas possible, beaucoup de sites utilisent / comme séparateur (à la place de -). D'autres, mais c'est peut-être plus rare, utilisent une séquence plus évoluée. Par exemple, SECTION et CATEGORIE sont séparés par -c- par exemple : SECTION-c-CATEGORIE-ID-la-suite.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Ah ok zut alors, SECTION et CATEGORIE ont des tirets parfois.
    J'ai essayé avec / mais j'ai vraiment du mal à le mettre en place car le serveur l'interprète comme un répertoire et du coup mon css et mes fichiers js ne sont pas appliqué. Bizarre qu'il n'y ai pas moyen de mettre ces tirets!

  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
    Points : 12 977
    Points
    12 977
    Par défaut
    Citation Envoyé par dusk666 Voir le message
    car le serveur l'interprète comme un répertoire
    Non, c'est faux, c'est le navigateur qui a cette interprétation. Ce problème est ultra-classique dans l'URL rewriting. La solution est très simple : indiquer toutes les URL de tes ressources (images, CSS, etc.) en tant qu'URL relatives à la racine du site, en clair les faire commencer par un / : src="/images/..." au lieu de src="images/..."

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Ok dac merci, je vais essayé ceci.
    Je me posais une autre question aussi, si je décide de mettre un séparateur du type -section- -categorie- etc, cela va m'allonger l'url. Est ce qu'au niveau référencement cela ne va pas nuire?

  8. #8
    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
    Points : 12 977
    Points
    12 977
    Par défaut
    aucune idée

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Ok pas grave j'ai adopté la solution Slash qui fonctionne très bien en mettant la balise meta : <base href="http://www.monsite.com/" >

    Merci beaucoup pour ton aide.

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

Discussions similaires

  1. Problème url rewriting et tiret
    Par piedbleu dans le forum Apache
    Réponses: 3
    Dernier message: 14/05/2012, 17h47
  2. Réponses: 1
    Dernier message: 04/08/2010, 11h36
  3. Réponses: 4
    Dernier message: 30/06/2009, 18h39
  4. [Url Rewriting] les tirets
    Par masseur dans le forum Apache
    Réponses: 1
    Dernier message: 17/08/2007, 14h10
  5. [Débutant]infos ds session sans cookie ? url rewriting ?
    Par Satanas_et_diabolo dans le forum ASP
    Réponses: 8
    Dernier message: 10/10/2006, 17h13

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