Redirection selon heure précisée dans l'URL

Nouveau WRInaute
Bonjour,

j'ai lu plusieurs tutos sur l'url rewriting utilisant les variables %{TIME_HOUR} et une condition "statique" sur l'heure fonctionne très bien :

Code:
RewriteCond   %{TIME_HOUR} >09
RewriteCond   %{TIME_HOUR} <19
RewriteRule ^alt/index.html jour.html [L,NC]
RewriteRule ^alt/index.html nuit.html [L,NC]

mais j'aimerais pouvoir réécrire selon l'heure de début et de fin de la journée spécifiée grâce à l'url;

ex :
Code:
RewriteCond   %{TIME_HOUR} >$1
RewriteCond   %{TIME_HOUR} <$2
RewriteRule ^alt_([0-9][0-9])_([0-9][0-9])/index.html jour.html [L,NC]
RewriteRule ^alt_([0-9][0-9])_([0-9][0-9])/index.html nuit.html [L,NC]

seulement, cela ne fonctionne pas :?

ainsi /alt_09_19/ aurait exactement le même résultat que /alt/
mais /alt_XX_XX/ permettrait d'afficher la page jour à nos amis québécois par exemple puisque la redirection n'est possible que suivant l'heure de mon serveur ..?

j'espère que j'ai été le plus clair possible,
cordialement,
 
WRInaute impliqué
Tu ne peut pas avoir de références en avant. Il faut que tu utilise une condition de plus pour récupérer les infos dont tu as besoin. Je ne suis pas bien sûr de laquelle, essaie REQUEST_URI :

Code:
RewriteCond %{REQUEST_URI} ^(.*)alt_([0-9][0-9])_([0-9][0-9])
RewriteCond   %{TIME_HOUR} >%1
RewriteCond   %{TIME_HOUR} <%2
RewriteRule ^alt_([0-9][0-9])_([0-9][0-9])/index.html jour.html [L,NC]
RewriteRule ^alt_([0-9][0-9])_([0-9][0-9])/index.html nuit.html [L,NC]
 
Nouveau WRInaute
Bonjour Vap,

j'ai essayé ton code y compris en mettant $1 au lieu de %1

ainsi que "rectifié" (puisque (.*) génère %1 et ([0-9][0-9] %2 ... )

Code:
RewriteCond %{REQUEST_URI} ^(.*)alt_([0-9][0-9])_([0-9][0-9])/(.*)
RewriteCond   %{TIME_HOUR} >%2
RewriteCond   %{TIME_HOUR} <%3
RewriteRule ^alt_([0-9][0-9])_([0-9][0-9])/index.html jour.html [L,NC]
RewriteRule ^alt_([0-9][0-9])_([0-9][0-9])/index.html nuit.html [L,NC]

merci pour l'idée, je continue à chercher ;)
 
WRInaute impliqué
IL faut bien utiliser % pour référencer ce qui apparait dans els conditions. Et tu as bien vu nque j'avais oublié de tenir compte du premier motif.

Dis moi si tu arrives a t'en sortir.
 
Nouveau WRInaute
Code:
RewriteCond %{REQUEST_URI} ^(.*)alt_([0-9][0-9])_([0-9][0-9])/(.*)
RewriteCond   %{TIME_HOUR} >%2
RewriteCond   %{TIME_HOUR} <%3
RewriteRule ^alt_([0-9][0-9])_([0-9][0-9])/index.html jour.html [L,NC]
RewriteRule ^alt_([0-9][0-9])_([0-9][0-9])/index.html nuit.html [L,NC]

avec ce code en place, cela renvoie toujours nuit.html :(
 
WRInaute impliqué
Ca veut dire qu'une des cond n'est jamais vraie.

As tu essayé de ne mettre que la première? Comme je te l'ai dit, je ne sais pas si c'est la bonne.
 
Nouveau WRInaute
si je met en commentaire les 2 conditions sur TIME, c'est la page jour.html qui est renvoyé ;)

le soucis viendrait donc de la récupération des variables % ?
 
WRInaute impliqué
J'ai dit une connerie (c'est ni la première, ni la dernière fois).

Tu peux référencer les motifs de la règle dans les conditions...

Bref, tes règles devraient etre correctes comme suit



Code:
RewriteCond   %{TIME_HOUR} >$1
RewriteCond   %{TIME_HOUR} <$2
RewriteRule ^alt_([0-9][0-9])_([0-9][0-9])/index.html jour.html [L,NC]

RewriteRule ^alt_([0-9][0-9])_([0-9][0-9])/index.html nuit.html [L,NC]

Maintenant, lla partie droite des conditions doit etre une expression régulière PERL. Il n'es pas possible d'avoir des variables dedans...

Il ne te reste plus qu'à faire le boulot en PHP.

Désolé.
 
Nouveau WRInaute
Bonjour Vap et merci de m'aider ;),

Code:
RewriteCond   %{TIME_HOUR} >$1
RewriteCond   %{TIME_HOUR} <$2
RewriteRule ^alt_([0-9][0-9])_([0-9][0-9])/index.html jour.html [L,NC]

RewriteRule ^alt_([0-9][0-9])_([0-9][0-9])/index.html nuit.html [L,NC]

amène nuit.html ...

la partie droite des conditions doit etre une expression régulière PERL

qu'entend tu par là ?

il n'y a donc aucun moyen de faire ces redirections coté apache ..? car cela pourrait aussi servir pour des images, et coté php :?

encore merci,
 
WRInaute impliqué
CaptainLucifel a dit:
la partie droite des conditions doit etre une expression régulière PERL

qu'entend tu par là ?

il n'y a donc aucun moyen de faire ces redirections coté apache ..? car cela pourrait aussi servir pour des images, et coté php :?

encore merci,

Une expressin réguloière PERL est une expression régulière comprise par le lan gage PERL. Ce sont les mêmes que celles utilisées par Apache. ON ne peut pas mettre des variables dedans, comme le contenu de TIME_HOUR.

Donc on ne peut pas faire ce que tu veux avec mod_rewrite.

Par contre tu devrais pouvoir le faire en PHP.
 
Nouveau WRInaute
sauf que ce système servira souvent donc niveau php :?

je pense que je vais donc le faire à la "main" niveau apache pour toutes les heures possibles :

Code:
RewriteCond   %{TIME_HOUR} <18
RewriteRule ^alt_([0-9][0-9])_(18)/index.html jour.html [L,NC]
RewriteCond   %{TIME_HOUR} <19
RewriteRule ^alt_([0-9][0-9])_(19)/index.html jour.html [L,NC]


RewriteRule ^alt_([0-9][0-9])_([0-9][0-9])/index.html nuit.html [L,NC]

ou peux t-on mieux écrire les règles ? ;)
 
WRInaute impliqué
CaptainLucifel a dit:
ou peux t-on mieux écrire les règles ? ;)

Je ne vois pas, si quelqu'un d'autre a une idée je serais intéressé. Mais bon, tu n'aura que 24 règles après tout! :wink:
 
Nouveau WRInaute
hum ..
24 règles pour l'heure de début de la journée
24 règles pour l'heure de fin de la journée

soit il faudra faire tous les cas possibles à la main : 24*24 !!

soit

Code:
RewriteCond   %{TIME_HOUR} >00
RewriteRule ^alt_([0-9][0-9])_(00)/index.html jour.html [L,NC]
RewriteCond   %{TIME_HOUR} >01
RewriteRule ^alt_([0-9][0-9])_(01)/index.html jour.html [L,NC]
[...]
RewriteCond   %{TIME_HOUR} <18
RewriteRule ^alt_([0-9][0-9])_(18)/index.html jour.html [L,NC]
RewriteCond   %{TIME_HOUR} <19
RewriteRule ^alt_([0-9][0-9])_(19)/index.html jour.html [L,NC]


RewriteRule ^alt_([0-9][0-9])_([0-9][0-9])/index.html nuit.html [L,NC]

fonctionne :p

je vais tester la deuxième..
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut