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 :

Une RewriteCond inhabituelle


Sujet :

Apache

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 17
    Par défaut Une RewriteCond inhabituelle
    Bonsoir,

    Je doute que quelqu'un trouve...j'ai effectué un tas de recherches sur internet et j'ai le sentiment que ce n'est pas possible : j'aimerais effectuer une RewriteRule uniquement si un argument balancé dans l'URL est égal à la variable ${TIME_HOUR}

    J'ai donc essayé plusieurs chose, mais je vais vous écrire celle qui me semble la plus logique pour que vous compreniez mon problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteCond %{TIME_HOUR} ^/temp/index-([0-9]{1,2})$
    RewriteRule ^index-([0-9]{1,2})$ hep.php?id=$1 [L]
    une autre de mes tentative était celle-ci (on sait jamais, ça peut vous mettre sur une piste) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteCond %{REQUEST_URI} /temp/index-%{TIME_HOUR}
    RewriteRule ^index-([0-9]{1,2})$ hep.php?id=$1 [L]
    Pour information...aucune des deux solutions ne fonctionne...

    Avez-vous une idée...?

    Merci

  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
    Par défaut
    C'est la deuxième version qui a le plus de chances d'aboutir. C'est même surprenant qu'elle ne marche pas. Quand tu dis que ça ne marche pas, il se passe quoi, exactement ? Il y a donc un conflit potentiel avec d'autres règles. Tu peux donner le .htaccess complet et l'URL avec laquelle tu testes ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 17
    Par défaut
    Tu as déjà le contenu total du htaccess Enfin pour être franc j'ai juste ceci en plus (en haut des deux dernières lignes) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Options +FollowSymlinks
    RewriteEngine On
    Lorsque je dis qu'il ne se passe rien, je veux dire par là que ma RewriteRule n'est pas exécutée. Je ne suis pas redirigé vers le fichier hep.php

    Le problème vient du fait qu'on ne peut pas utiliser les variables %{truc} dans le second argument. Ils sont réservés au premier argument uniquement.

    J'ai essayé également quelque chose dans le genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    RewriteCond %{REQUEST_URI} ^/temp/index-([0-9]{1,2})$
    RewriteCond %{TIME_HOUR} %1
    RewriteRule ^index-[0-9]{1,2}$ hep.php?id=$1 [L]
    Le %1 étant censé représenter la valeur capturée par mes parenthèses (dans le premier RewriteCond)...

    Ca ne fonctionne pas non plus

    EDIT: J'ai oublié de te donner l'url avec laquelle je teste : /temp/index-21

  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
    Par défaut
    Serveur mutualisé ou serveur maison ?

    A ma connaissance, tu peux utiliser les variables %{} partout.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 17
    Par défaut
    Serveur dédié chez OVH (Gentoo release)

    Je ne sais plus où j'ai lu ça, mais j'ai cru lire que dans le premier argument, on ne pouvait mettre qu'une chaîne de caractères (avec ou non les variables %{}) et que le deuxième argument était soit une valeur (chaîne) soit une expression régulière. Mais je n'ai vu nul part qu'on pouvait utiliser les variables %{}...J'espère vraiment me tromper

    Pour information, peut-être que ça peut t'aider, j'avais également essayé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteCond %{REQUEST_URI} /temp/index-21
    RewriteRule ^index-([0-9]{1,2})$ hep.php?id=$1 [L]
    Et ca fonctionnait nickel (enfin hier soir à 21h quoi ). C'est la raison pour laquelle je pensais que le second argument n'interprétait pas les variables

    Peut-être qu'il faut échapper certains caractères de cette variable ?

  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
    Par défaut
    Très étrange. J'étais près à dire qu'il manquait AllowOverride All dans la conf d'Apache.

    Du coup, l'idée c'est de voir si la variable %{TIME_HOUR} a la valeur attendue. Pour cela, ajoute cette variable dans la réécriture et affiche la valeur dans ton script hep.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^index-([0-9]{1,2})$ hep.php?id=$1&hour=%{TIME_HOUR} [L]

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 17
    Par défaut
    Effectivement j'ai oublié de préciser que j'ai déjà effectué ce test et la valeur renvoyée par %{TIME_HOUR} est la bonne

    Une autre idée lol ?

    EDIT: J'ai l'impression que lorsque les variables %{} sont utilisées dans le second argument, elles ne sont pas interprétés. Les caractères %{} sont traités comme une banale chaîne de caractères.

  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
    Par défaut
    C'est peut-être ça, la doc n'est pas claire. C'est vrai que c'est rare d'utiliser des variables dans le second membre d'une RewriteCond. Si c'est le cas, je ne suis pas sûr qu'une solution existe.

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

Discussions similaires

  1. Explication d'une RewriteCond
    Par skeut dans le forum Apache
    Réponses: 2
    Dernier message: 24/06/2015, 13h04
  2. Réponses: 5
    Dernier message: 24/05/2013, 21h15
  3. Réponses: 6
    Dernier message: 23/05/2012, 22h52
  4. écriture d'une RewriteCond
    Par hugo123 dans le forum Apache
    Réponses: 7
    Dernier message: 08/04/2011, 11h53
  5. Je ne peux établir une connexion cliente sous Linux.
    Par Anonymous dans le forum CORBA
    Réponses: 5
    Dernier message: 16/04/2002, 15h57

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