我怎样才能"关闭"一个星期日的网站

时间:2016-03-08 10:05:14

标签: php .htaccess redirect

我正在寻找一个脚本,将网站的所有页面重定向到一个页面,说明整个网站因周日因宗教原因而关闭。

它应该仅在星期日重定向。在一周的所有其他日子,网站应该正常运作。

我希望在.htaccess文件或PHP脚本中的服务器级别执行此操作。

我可以想象这样的事情:

$day = date('w');
if ($day == 0) { // Sunday...
    header("Location: http://www.domain.com/closedonsunday.html");
}

4 个答案:

答案 0 :(得分:6)

您可以在.htaccess中使用以下规则:

RewriteEngine on

#--if WDAY ==0--#
RewriteCond %{TIME_WDAY} 0

#--redirect the domain to /closedonsunday.html--#
RewriteRule ^((?!closedonsunday\.html).*)$ /closedonsunday.html [L,R]

%{TIME_WDAY}变量代表星期几(0-6)。

如果符合条件,上面的代码会将所有请求重定向到/closedonsunday.html

答案 1 :(得分:1)

您可以使用date()获取星期几的数字表示,并重定向:

$day = date('N'); //1 (for Monday) through 7 (for Sunday)
if($day == 7){
    header("Location: sunday_page.php");
}

通过将此代码放在标题的顶部,通过PHP完成它是非常好的。

答案 2 :(得分:1)

我不会对header执行此操作,因为根据用户的浏览器设置,可能会在星期一以外的其他日子获取该页面的缓存副本。

您可以使用include从其他文件执行脚本。在每个页面的顶部添加以下内容:

include 'path/to/closedonsunday.php';

然后closedonsunday.php会有一个非常简单的检查:

if (date('w') == 0) {
    /* ... message here ... */
    exit;
}

exit是至关重要的部分,因为它会阻止PHP死亡。

你也应该小心时区。确保您的服务器时钟设置正确,并且您的脚本知道它应该使用哪个时区!

答案 3 :(得分:1)

在我看来,您应该使用 .htaccess 文件。 .htaccess 中的日期和时间值以

的形式出现
  

%{TIME_XXXX}

XXXX 是您想要的日期或时间类型。

如果您想将通用网址重定向到包含今天日期的网址,您可以使用:

  

RewriteRule ^发布/今天$ / posts /%{TIME_YEAR} - %{TIME_MON} - %{TIME_DAY}

这会导致/ posts / today被重定向到/ posts / 2015-08-27

如果您希望在日期(和时间)为密码后重定向页面,则可以使用以下内容,如果日期在2015年8月27日上午9点过去,则会发生重定向。我们使用简单的数字比较将日期转换为整数然后进行比较。

RewriteCond %{TIME_YEAR}%{TIME_MON}%{TIME_DAY}%{TIME_HOUR} >2015082709
RewriteRule ^$ /destination/url.html [R=301,L]

在你的情况下

RewriteCond %{TIME_WDAY} = 0 // condition
RewriteRule URL on which you wants to redirect

有关更多教程,您可以使用链接Tutoriallink 2

如果您想使用PHP方式,请使用开关。如果以后你想在任何其他日子重定向,那么你可以在这里进行管理。

$day = date('N'); //1 for Monday , 2 for Tuesday ... 7 For Sunday
//N is  The ISO-8601 numeric representation of a day
switch($day){
case 1:
  header('location: site for Monday');break;
case 2:
  header('location: site link for Tuesday'); break;
}
 . 
 .
case 7: 
 header("Location: http://www.domain.com/closedonsunday.html"); break;
default:
    code to be executed if day is different from all labels; // it is not possible in this case :)

}