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 :

Problème de ponctuation avec urls rewriting


Sujet :

Apache

  1. #1
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2013
    Messages : 14
    Points : 13
    Points
    13
    Par défaut Problème de ponctuation avec urls rewriting
    Bonjour

    J'ai un blog en php et je ne peux pas avoir un article qui comporte un titre avec de la ponctuation ou des apostrophes. La page devient introuvable.

    voici mon encodage dans htaccess :
    RewriteRule ^blog/actualite/([0-9]+)/([0-9a-zA-Z_-]+)\.html$

    Merci de votre aide

  2. #2
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut Problème de ponctuation url rewriting
    Bonjour.
    Apparemment la "RegExp" semble correcte, mais vous n'avez pas indiqué l'URL réelle (le second paramètre de la RewriteRule)
    Par ailleurs je n'ai réussi à comprendre le problème (votre introduction, après Bonjour)...
    Cdlt

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2011
    Messages : 24
    Points : 31
    Points
    31
    Par défaut
    Hola, je suis tombé sur ce sujet car j'ai exactement le même soucis

    Dès que je met un ? dans mon url, bam 404, j'comprends pas trop

    Si quelqu'un peut nous renseigner ?

    Merci

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    bonsoir,

    je pense que vous avez tout les 2 le même problème les caractère ? et . (et bien d'autre) on une signification autre que la ponctuation dans une URL il faut donc les "échapper" %3F pour ?

    courage

  5. #5
    Membre habitué
    Inscrit en
    Mai 2008
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 317
    Points : 135
    Points
    135
    Par défaut
    Salut,

    Alors, premièrement, pour le "?" c'est normal, et il n'y a rien à faire à ma connaissance, l'explication est simple:
    dans une url, le "?" indique la fin de l'url réelle et le début des arguements, par exemple:

    http://monsite.com/mapage?test=1&test2=2
    l'url réelle est http://monsite.com/mapage et les variables passées par l'url sont test = 1 et test2 = 2 (en php $_GET['test'] == 1)

    Pour les apostrophes, le problème est a peu près pareille: il ne sont pas toléré dans les url,
    Explication:

    imaginez l'url suivante: http://monsite.com/titre'test
    Et maintenant, on créé un lien en html avec:
    <a href='http://monsite.com/titre'test' />

    la navigateur ne comprendra pas l'apostrophe, puisqu'il cloture la fin de l'url ( href='URL' ).
    quand votre utilisateur cliquera sur le lien, il ne verra que http://monsite.com/titre et pas le reste

    Par commodité, donc, on n'accepte que les caractères alphanumérique dans une url, ainsi que les "-", les "_", et les % pour les caractères encodés.
    D'autre cratères sont autorisés mais à éviter ( {}[]|, l'espace, et la plupart des caractères spéciaux ou accentués...) car ils peuvent pauser problème avec d'autres langages (xml, .net, json ...). à utiliser avec parcimonie et précaution donc.
    pour finir, les caractères strictement interdits sont: ? & # @ ' et " (puisqu'il ont une réel signification dans un url (ou en html pour les guillemets)) (j'en oublie peut être), si vous en avez besoin, il faut !ABSOLUMENT! les encoder (voir ci-desous - mais normalement pas besoin, le slug est mieux)

    Les solutions à utiliser:

    1) les url slugifiées (supprimera les caractères spéciaux en les remplaçant par des "-", et remplace les caractères accentués par leur équivalent sans accents)
    par exemple le titre "C'est un têst ?" deviendra "c-est-un-test", "cest-un-test" ou "c-est-un-test-" (selon la fonction que vous utiliserez)

    ou 2) les url encodées (fonction php urlencode()): par exemple "C'est un têst ?" deviendra "C%27est%20un%20test%20%3F"

    Vous l'aurez compris, la meilleurs pratique est d'utiliser le slug (bien plus lisible), mais il n'existe pas de fonction par défaut dans php, il faut la faire soit même (recherche google, c'est vite fait )

    Et pour finir, voici un petit récap:

    http://coin.des.experts.pagesperso-o...s/faq9_29.html
    et un autre, plus complet, mais en anglais:
    http://www.url-encode-decode.com/

    En esperant vous avoir éclairé/aidé
    [Résolu] si c'est le cas

    Bonne journée.


    --

    BAVARO12, tu as un problème supplémentaire:
    ta règle de réécriture n'acceptera pas les caractères encodés:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^blog/actualite/([0-9]+)/([0-9a-zA-Z_-]+)\.html$
    Signifie:
    1) doit COMMENCER par blog/actualite/
    2) suivis de chiffres autant que tu veux
    3) suivis de /
    4) suivis de chiffre/lettre minuscule/majuscule - ou _ autant que tu veux
    5) et FINIR par .html

    Rien de défini, donc, pour les caractères spéciaux/encodées.
    Par contre tu n'aura aucun problème si tu utilise les slugs

Discussions similaires

  1. Réponses: 0
    Dernier message: 19/09/2014, 15h16
  2. problème avec URL Rewriting QUERY
    Par aurore22 dans le forum Apache
    Réponses: 1
    Dernier message: 18/09/2013, 21h08
  3. Problème avec url rewriting
    Par queen_pitbull dans le forum Apache
    Réponses: 6
    Dernier message: 22/01/2009, 14h41
  4. Petit souci avec URL Rewriting
    Par jhdscript dans le forum Apache
    Réponses: 6
    Dernier message: 18/06/2008, 09h02

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