.HTACCESS使用if语句重定向

时间:2011-05-20 19:01:59

标签: .htaccess mod-rewrite

我可以使用 .HTACCESS 仅在一天的特定时间重定向吗? 例如,如果getHours() 甚至,则重定向。 如果getHours() 甚至都不做任何事情。

我如何在.htaccess

中加入以下内容
var abcde = new Date();
if (abcde.getHours()%2==0){redirect here}

2 个答案:

答案 0 :(得分:1)

.htaccess的语法非常有限。我不知道使用纯Apache / .htaccess语法比较日期或时间的方法。这样的东西不是它的设计目的。

可以做一些调用外部脚本的RewriteMap,它会根据一天中的时间返回重写规则,但这很愚蠢。

使用服务器端语言(如PHP)进行检查,在那里进行检查,并在完成后执行标题重定向(或使用include()包含所需内容)。

答案 1 :(得分:1)

啊,你看过http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritecond:有一个TIME_HOUR属性你可以使用RewriteCond。这将是繁琐的,但这样的事情会起作用:

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

意味着只有在一天中的时间是凌晨2点到早上8点之间才会执行Rewrite语句。对于您的示例,您可以尝试:

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或其他任何类型。