Перенаправление .HTACCESS с оператором if - PullRequest
0 голосов
/ 20 мая 2011

Могу ли я использовать .HTACCESS для перенаправления только в определенное время дня? Например, если getHours() равно даже , перенаправьте. Если getHours() равно , то даже ничего не делать.

Как я могу включить ниже в .htaccess?

var abcde = new Date();
if (abcde.getHours()%2==0){redirect here}

Ответы [ 2 ]

1 голос
/ 21 мая 2011

Ах, вы смотрели на http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritecond: есть свойство TIME_HOUR, которое вы можете использовать RewriteCond.Это было бы громоздко, но что-то вроде этого сработало бы:

RewriteCond %{TIME_HOUR}  >=2
RewriteCond %{TIME_HOUR}  <=8

означало бы, что операторы Rewrite будут выполняться, только если время дня будет между 2 и 8 часами утра.Для вашего примера вы можете попробовать:

RewriteCond %{TIME_HOUR}  =0 [OR]
RewriteCond %{TIME_HOUR}  =2 [OR]
RewriteCond %{TIME_HOUR}  =4 [OR]
RewriteCond %{TIME_HOUR}  =6 [OR]
RewriteCond %{TIME_HOUR}  =8 [OR]
RewriteCond %{TIME_HOUR}  =10 [OR]
RewriteCond %{TIME_HOUR}  =12 [OR]
RewriteCond %{TIME_HOUR}  =14 [OR]
RewriteCond %{TIME_HOUR}  =16 [OR]
RewriteCond %{TIME_HOUR}  =18 [OR]
RewriteCond %{TIME_HOUR}  =20 [OR]
RewriteCond %{TIME_HOUR}  =22

Громоздко, но не потребует Javascript или чего-либо еще в этом роде.

1 голос
/ 20 мая 2011
Синтаксис

.htaccess очень ограничен. Я не знаю, как сравнить даты или время, используя чистый синтаксис Apache / .htaccess. Такие вещи - не то, для чего они предназначены.

Вы могли бы сделать что-то с RewriteMap, который вызывает внешний скрипт, который возвращает правила перезаписи в соответствии с временем суток, но это было бы глупо.

Выполните проверку на серверном языке, таком как PHP, выполните проверку там и выполните перенаправление заголовка (или включите нужный контент, используя include()), когда закончите.

...