我正在寻找一个脚本,将网站的所有页面重定向到一个页面,说明整个网站因周日因宗教原因而关闭。
它应该仅在星期日重定向。在一周的所有其他日子,网站应该正常运作。
我希望在.htaccess
文件或PHP脚本中的服务器级别执行此操作。
我可以想象这样的事情:
$day = date('w');
if ($day == 0) { // Sunday...
header("Location: http://www.domain.com/closedonsunday.html");
}
答案 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
有关更多教程,您可以使用链接Tutorial和 link 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 :)
}