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éécriture des dates


Sujet :

Apache

  1. #1
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 044
    Par défaut [URL rewriting] Réécriture des dates
    Bonsoir, j'ai un fichier htaccess pour la gestion des directives de réécriture.
    J'utilise une URL qui contient un paramètre de date formatée (2011/03/02)
    La réécriture fonctionne mais n'est pas correct car il considère la fin de la date pour un autre paramètre dans cette même réécriture.
    Je souhaite forcer la date dans l'url
    Voici un exemple d'URL :
    /actualites/2011/02/03/mon-actualite-numero-2/hrPH1lUTbkMh0hSRtPsO/
    /
    Ma réécriture pour cette URL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^(actualites|news|nieuws)[/]([/0-9]+)[/]([-_0-9a-zA-Z]+)[/]([0-9a-zA-Z]+)/{0,1}$   /news.php?getdate=$2&uri_get_news=$3&getnews=$4				[QSA,L]
    Ne dois je pas modifier ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (actualites|news|nieuws)[/]([/0-9]+)
    Par quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (actualites|news|nieuws)[/]([/0-9]+){4}[/]([/0-9]+){2}[/]([/0-9]+){2}/
    Sachant que je dois pensé aux autres paramètres

  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
    C'est inutilement complexe, de ce que je comprends :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^(?:actualites|news|nieuws)/(\d{4}/\d{2}/\d{2})/([-_0-9a-zA-Z]+)/([0-9a-zA-Z]+)/?$ /news.php?getdate=$1&uri_get_news=$2&getnews=$3 [QSA,L]
    ?

  3. #3
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 044
    Par défaut
    Bonjour Julp
    J'ai une question que fait cette partie ? :

  4. #4
    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
    (?: ... ) : c'est une parenthèse non capturante (donc pas de mémorisation, pas de variable associée). $1 désigne dès lors la partie date et non actualites|news|nieuws dont visiblement vous n'aviez pas besoin.

  5. #5
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 044
    Par défaut
    Donc si je comprend bien je n'est nul besoin de la partie petites-annonces
    mais si j'ai utilisé $2 c'est parce qu'au début de mon fichier je charge la langue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^(fr|en|nl|de {1,3}/(.*) 	   /$2?getLanguage=$1 [QSA,L]
    Mes annonces actuelles :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^(petites-annonces|small-ads|zoekertjes|anzeigen)/([/0-9]+)-([-0-9a-zA-Z]+)/{0,1}$     		/smallads.php?getid_sect_adds=$2&sect_link_adds=$3  [QSA,L]
    je suppose que sa fonctionnera mieux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^(?:petites-annonces|small-ads|zoekertjes|anzeigen)/([/0-9]+)-([-0-9a-zA-Z]+)/{0,1}$     		/smallads.php?getid_sect_adds=$2&sect_link_adds=$3 [QSA,L]

  6. #6
    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
    J'ai du mal à suivre.

    Dans la première [celles avec les langues] (qui est syntaxiquement fausse), il faut des parenthèses capturantes puisque vous souhaitez réutiliser cette partie.

    Dans la seconde, si la partie petites-annonces|small-ads|zoekertjes|anzeigen n'est pas utilisée (ce qui est visiblement le cas), une parenthèse capturante n'est pas nécessaire. Par contre, si vous en utilisez une non-capturante, il ne faut pas oublier de décrémenter vos variables ($1 : fait alors référence à ce qui est capturé par ([/0-9]+) ; $2 à ([-0-9a-zA-Z]+)).

    Après, vous gérez ça comme vous voulez. Les parenthèses non-capturantes ne sont pas "obligatoires" (c'est juste plus "propre" et ça permet éventuellement de ne pas atteindre inutilement la limite des 9 captures).

  7. #7
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 044
    Par défaut
    Que dois je modifier dans:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^(fr|en|nl|de){1,3}/(.*) 	 /$2?getLanguage=$1  [QSA,L]
    Pour la rendre syntaxiquement correct ?
    Ceci est-il plus cohérent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^(?:petites-annonces|small-ads|zoekertjes|anzeigen)/([/0-9]+)-([-0-9a-zA-Z]+)/{0,1}$     		/smallads.php?getid_sect_adds=$1&sect_link_adds=$2 [QSA,L]
    LA partie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (?:petites-annonces|small-ads|zoekertjes|anzeigen)
    fais alors référence à /smallads.php. et getid_sect_adds=$1 à ceci:

  8. #8
    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
    Citation Envoyé par gtraxx Voir le message
    Que dois je modifier dans:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^(fr|en|nl|de){1,3}/(.*) 	 /$2?getLanguage=$1  [QSA,L]
    Pour la rendre syntaxiquement correct ?
    Rien, elle l'est là (avant il y avait un espace au lieu d'une parenthèse fermante). Par contre, est-elle "logique" ? (de 1 à trois "langues" ? frenfr est accepté)

    Citation Envoyé par gtraxx Voir le message
    Ceci est-il plus cohérent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^(?:petites-annonces|small-ads|zoekertjes|anzeigen)/([/0-9]+)-([-0-9a-zA-Z]+)/{0,1}$     		/smallads.php?getid_sect_adds=$1&sect_link_adds=$2 [QSA,L]
    Correct, oui ({0,1} <=> ?).

    Citation Envoyé par gtraxx Voir le message
    LA partie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (?:petites-annonces|small-ads|zoekertjes|anzeigen)
    fais alors référence à /smallads.php.
    Non, elles n'ont aucun lien.

    Citation Envoyé par gtraxx Voir le message
    et getid_sect_adds=$1 à ceci:
    Oui, comme je l'ai écrit précédemment.

  9. #9
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 044
    Par défaut
    Rien, elle l'est là (avant il y avait un espace au lieu d'une parenthèse fermante). Par contre, est-elle "logique" ? (de 1 à trois "langues" ? frenfr est accepté)
    Heu {1,3} c'est pas de 1 à 3 lettres ?
    C'est vrai qu'au lieu de sa :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^(fr|en|nl|de){1,3}/(.*)
    Je suppose qu'un truc comme sa est plus flexible :
    Si bien sur je me suis pas planté sur la règle {1,3}, je dois absolument ne permettre que maximum 3 lettres en début d'url

  10. #10
    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
    Non, absolument pas. Vous devriez (re)prendre un tutoriel sur les expressions régulières et/ou tester.

    {1,3} : 1 à 3 fois ce qui précède. Or ce qui précède, c'est la chaîne 'fr' ou 'nl' ou 'en' ou 'de' (du fait du groupement via la parenthèse). Donc en l'état, vous avez correspondance avec des chaînes comme frfr, enfren, deenfr, etc. (bien que vous ne voyez/capturez que la dernière)

    Idem pour ([a-zA-Z]+){1,3} : ça ne désigne pas "une à trois lettres" non plus. ([a-zA-Z]{1,3}) oui.

  11. #11
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 044
    Par défaut
    Effectivement c'est beaucoup mieux.
    C'est tout même difficile de savoir que la réécriture était incorrect sauf après réflexion (vu que pas d'erreur).
    C'est vrai que la je me suis bien planté avec les expressions régulières.
    Je vais devoir lire le sujet en profondeur pour corriger mes expressions régulières et décortiqué avant l'ajout des règles prochaines.
    Grand merci Julp

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

Discussions similaires

  1. [URL rewriting] Réécriture de dates
    Par gtraxx dans le forum Apache
    Réponses: 3
    Dernier message: 17/12/2009, 00h25
  2. [URL rewriting] Réécriture automatique des liens ?
    Par Dev@lone dans le forum Apache
    Réponses: 3
    Dernier message: 10/11/2009, 13h42
  3. [URL Rewriting] Réécriture et espaces
    Par iwf-fr dans le forum Apache
    Réponses: 5
    Dernier message: 02/09/2007, 14h33
  4. Réponses: 6
    Dernier message: 19/12/2005, 13h41

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