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ègle de réécriture ne fonctionnant pas


Sujet :

Apache

  1. #1
    Candidat au Club
    Inscrit en
    Octobre 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 9
    Points : 3
    Points
    3
    Par défaut [URL Rewriting] Règle de réécriture ne fonctionnant pas
    Salt à vous
    ca fait 2 jours que je me casse la tête a essayer d'établir une règle de réécriture après changement du format des URL de mon Blog dotclear

    celui ci utilisait les URL en QUERY STRING, je viens de passer au format PATH INFO... le blog fonctionne, mais j'aimerais que les nombreux liens externes pointant vers mes articles restent valables

    je souhaite donc réécrire les URL entrant sous cette forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://www.breizh-ardente.fr/dotclear/index.php?2006/07/19/34-installer-ubuntu
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://www.breizh-ardente.fr/dotclear/34-installer-ubuntu
    j'y connais rien, mais j'ai potassé les tutoriels Apache sur les expressions régulières, et 2/3 trucs sur apache, ce qui m'a conduit à écrire, après quelques améliorations, cette règle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    # anciennes URL
    RewriteCond %{QUERY_STRING} ^([0-9]{4})/([0-9]{2})/([0-9]{2})/([0-9]{2,3})-([a-zA-Z0-9-]+)$
    RewriteRule ^/dotclear/index.php /dotclear/%4-%5?
    qui ne marche pas

    une idée ?

  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
    Et où est placée cette règle ? Si c'est dans un fichier .htaccess, le chemin ne doit pas commencer par un slash (au niveau du premier paramètre)

  3. #3
    Candidat au Club
    Inscrit en
    Octobre 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    la règle est dans un .htaccess à la racine

    le blog est dans un repertoire dotclear

    je varie les versions, sans résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    # anciennes URL
    RewriteCond %{QUERY_STRING} ^([0-9]{4}/[0-9]{2}/[0-9]{2})/([0-9]+.*)$ 
    RewriteRule ^dotclear/index.php http://www.breizh-ardente.fr/dotclear/%2?
    même sans le /

  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
    Avant cela et étant donné que votre première règle fonctionne (après correction du slash), la réécriture vous est-elle possible et fonctionne-t-elle ? Si oui, il faudrait regarder ce qu'il se passe (en activant le journal de réécriture et/ou ajoutant l'option R - qu'il serait probablement bon d'adopter par ailleurs dans le cas présent). Si non, il faudrait consulter les journaux (dans la mesure du possible).

  5. #5
    Candidat au Club
    Inscrit en
    Octobre 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    je ne saisis pas trop cette dernière intervention

    Citation Envoyé par julp Voir le message
    Avant cela et étant donné que votre première règle fonctionne (après correction du slash),
    aucune des règles ne fonctionne

    Citation Envoyé par julp Voir le message
    la réécriture vous est-elle possible et fonctionne-t-elle ?
    elle est possible, je suis hebergé sur un serveur mutualisé chez online.net
    Citation Envoyé par FAQ online.net
    * Support de mod_rewrite pour Apache
    ------------------------------------
    Le support des rewrites rules est maintenant complet et standard,
    leur configuration se fait via les traditionnels fichiers .htaccess .
    Citation Envoyé par julp Voir le message
    Si oui, il faudrait regarder ce qu'il se passe (en activant le journal de réécriture et/ou ajoutant l'option R - qu'il serait probablement bon d'adopter par ailleurs dans le cas présent). Si non, il faudrait consulter les journaux (dans la mesure du possible).
    journal de réécriture ?
    j'ai apercu une option pour activer les log apache, je vais tâcher de remettre la main dessus

  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
    Citation Envoyé par traax
    Citation Envoyé par julp
    Avant cela et étant donné que votre première règle fonctionne (après correction du slash),
    aucune des règles ne fonctionne
    La règle me paraissait initialement correcte mais je l'ai testé sur mon propre environnement avec succès dans les mêmes conditions.

    Citation Envoyé par traax
    Citation Envoyé par julp
    la réécriture vous est-elle possible et fonctionne-t-elle ?
    elle est possible, je suis hebergé sur un serveur mutualisé chez online.net
    Citation Envoyé par FAQ online.net
    * Support de mod_rewrite pour Apache
    ------------------------------------
    Le support des rewrites rules est maintenant complet et standard,
    leur configuration se fait via les traditionnels fichiers .htaccess .
    Ça dépend de vos "droits" et de la configuration d'Apache parce que c'est potentiellement à vous de préciser Options +FollowSymLinks (ou équivalents), pré-requis à la réécriture (dans le cas contraire une erreur le mentionne explicitement dans les logs).

    Et il ne faut sans doute pas oublier d'activer localement la réécriture (RewriteEngine on), ligne qui n'apparaît pas dans ce que vous avez donné.

    Citation Envoyé par traax
    Citation Envoyé par julp
    Si oui, il faudrait regarder ce qu'il se passe (en activant le journal de réécriture et/ou ajoutant l'option R - qu'il serait probablement bon d'adopter par ailleurs dans le cas présent). Si non, il faudrait consulter les journaux (dans la mesure du possible).
    journal de réécriture ?
    Sur du mutualisé ce sera impossible, de toute manière.

  7. #7
    Candidat au Club
    Inscrit en
    Octobre 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    hum, vu la persistance du problème, je pense que je n'ai pas suffisament explicité

    on récapitule
    j'ai installé depuis longtemps dotclear en query string, avec les URL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://www.breizh-ardente.fr/dotclear/index.php?2006/07/19/34-installer-ubuntu
    je viens de modifier le format des URL, avec un plugin dotclear
    http://plugins.dotaddict.org/dc1/det...lisation-dURLs
    ce qui donne des URL au format
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://www.breizh-ardente.fr/dotclear/index.php/34-installer-ubuntu
    et rajouté une première règle pour supprimer le index.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    # URL simplifiee
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /dotclear/index.php
    mon fichier htaccess de départ est le suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Redirect temp /index.html http://www.breizh-ardente.fr/dotclear/
    ErrorDocument  404  /dotclear/erreur404
    AddType application/x-httpd-php5 .php
    RedirectPermanent /dotclear/punbb http://forum.breizh-ardente.fr
     
    # RSS Dotclear 1
    RewriteEngine on
    RewriteBase /
    RewriteCond %{HTTP_USER_AGENT} !FeedBurner
    RewriteRule dotclear/rss.php$ http://feeds.feedburner.com/Breizh-ardente [L,R=301]
     
    # URL simplifiee
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /dotclear/index.php
    par dessus ca, j'essaie maintenant de faire reconnaitre mes anciennes URL
    j'insère donc la règle #anciennes URL au dessus de #URL simplifiee
    pour qu'elle soit prise en compte dans un premier temps.

    j'ai reproduit l'installation en local sur mon pc (ubuntu 7.10 & apache2)
    j'ai refait les même étapes, dans l'ordre, le problème est identique
    (install en query string, changement du mode en path info, activation des URL simplifiée, puis essayer de reconnaitre les anciennes url)

    ca ne marche pas

    par contre, je vais m'atteler à activer les logs pour y voir plus clair
    je posterais les résultats ici

  8. #8
    Candidat au Club
    Inscrit en
    Octobre 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    bien bien
    tout d'abord, je te remercie vraiment de l'aide apportée
    ensuite,
    voila le log de l'appel de h**p://localhost/dotclear/34-installer-ubuntu
    qui conduit bien à la page demandée
    http://pastebin.com/m19492ade

    je les met en lien, le forum refuse autant de caractère

    et celui de l'appel de h**p://localhost/dotclear/index.php?2006/07/19/34-installer-ubuntu
    qui ramène à la page d'accueil
    http://pastebin.com/d29f4d4da

    si tu arrives a en faire quelques chose

  9. #9
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    # URL simplifiee
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /dotclear/index.php
    Ne faudrait-il pas un ou logique pour lier ces deux conditions ? (option [OR] à ajouter à la fin de la première)

    (cette règle étant "redondante" avec la gestion de l'erreur 404 par ailleurs)

  10. #10
    Candidat au Club
    Inscrit en
    Octobre 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Comme beaucoup de monde, je copie/colle, si ca marche, je ne cherche pas forcément à aller plus loin
    là ça déconne, j'essaie de creuser un peu, mais c'est pas mon domaine
    j'apprends plein de choses ces jours cis

    tu proposes quelque chose du genre ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    # URL simplifiee
    RewriteCond %{REQUEST_FILENAME} !-f [OR]
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /dotclear/index.php
    ca fait une erreur 500

    Quant à la redondance de la règle, je ne me prononcerai pas sur le sujet

  11. #11
    Candidat au Club
    Inscrit en
    Octobre 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    encore moi

    ca y est, ca marche
    simplement en rajoutant les options [L,R] à la fin de la règle


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    # anciennes URL
    RewriteCond %{QUERY_STRING} ^([0-9]{4})/([0-9]{2})/([0-9]{2})/([0-9]{2,3})-([a-zA-Z0-9-]+)$
    RewriteRule ^dotclear/index.php /dotclear/%4-%5? [L,R]
    I AM HAPPY

    un dernière question : je laisse la redirection telle quelle ?
    ou il vaut mieux, pour le référencement, rajouter une option genre 301 ?

    merci de ton aide, et si tu as un moment pour m'expliquer pourquoi ca marche avec ces options et pas sans

  12. #12
    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'option [OR] n'était pas logique (en plus de conduire à une erreur)

    C'était justement ce que j'étais en train de constater : vos logs semblaient indiquer un conflit au niveau de vos règles (tout retransitait sur l'index) et comme vous nous les avez donné au compte goutte et "hors contexte", difficile pour nous de s'en apercevoir (elles forment un tout plus ou moins liées et où leur ordre d'apparition peut intervenir suivant les cas).

    L'option L, c'est pour indiquer qu'il n'y a pas lieu de traiter les autres règles de réécriture. Donc il s'arrêtera à la dernière qui correspond si celle-ci possède ce flag au lieu de poursuivre. Pour la redirection, à moins que ce ne soit vraiment temporaire (302, valeur par défaut), oui, un code 301 (permanent) sera plus adapté.

  13. #13
    Candidat au Club
    Inscrit en
    Octobre 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    effectivement, sur la plateforme dotclear, tout le template repose sur le fichier index.php

    je n'avais pas notion du "TOUT" formé par l'ensemble des règles , mais les erreurs sont formatrices
    je n'avais encore jamais autant galéré sur un truc depuis que j'essaie de tenir un site
    m'enfin, ca marche, c'est l'essentiel

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 01/09/2011, 16h21
  2. [URL rewriting] Règle qui ne marche pas en local
    Par shadeoner dans le forum Apache
    Réponses: 1
    Dernier message: 02/11/2010, 17h45
  3. Réponses: 5
    Dernier message: 12/04/2009, 22h28
  4. [URL Rewriting] Ma réécriture ne fonctionne pas
    Par SebastienM dans le forum Apache
    Réponses: 6
    Dernier message: 04/06/2008, 16h06
  5. [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

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