Php “我怎么能?”;“关闭”;只有星期天才有网站

Php “我怎么能?”;“关闭”;只有星期天才有网站,php,.htaccess,redirect,Php,.htaccess,Redirect,我正在寻找一个脚本,重定向到一个网页的所有网页,说明整个网站是关闭周日宗教原因的网页 它应该只在周日重定向。在一周中的所有其他日子,站点应正常运行 我希望在服务器级别的.htaccess文件或PHP脚本中这样做 我可以想象这样的情况: $day = date('w'); if ($day == 0) { // Sunday... header("Location: http://www.domain.com/closedonsunday.html"); } 您可以使用date()获取星

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

它应该只在周日重定向。在一周中的所有其他日子,站点应正常运行

我希望在服务器级别的
.htaccess
文件或PHP脚本中这样做

我可以想象这样的情况:

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

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

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

通过PHP将此代码放在页眉的顶部,这样做很好。

我不会使用
页眉进行此操作,因为根据用户的浏览器设置,用户可能会在星期一以外的几天获得页面的缓存副本

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

include 'path/to/closedonsunday.php';
然后,
closedonsunday.php
将有一个非常简单的检查,如:

if (date('w') == 0) {
    /* ... message here ... */
    exit;
}
退出
是这里的关键部分,因为它将阻止PHP死机


你也应该注意时区。确保服务器时钟设置正确,并且脚本知道应该使用哪个时区

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

%{TIME_XXXX}

其中,XXXX是您想要的日期或时间类型

如果要将通用url重定向到包含今天日期的url,可以使用:

重写规则^posts/today$/posts/%{TIME\u YEAR}-%{TIME\u MON}-%{TIME\u DAY}

这将导致/posts/今天被重定向到类似于/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
有关更多教程,您可以使用链接和

如果您想使用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 :)

}

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

重新编写引擎打开
#--如果WDAY==0--#
重写cond%{TIME_WDAY}0
#--将域重定向到/closedonsunday.html--#
重写规则^((?!closedonsunday\.html.*)$/closedonsunday.html[L,R]
%{TIME\u WDAY}
变量表示一周中的某一天(0-6)


如果满足条件,上述代码将把所有请求重定向到
/closedonsunday.html

感谢您的htaccess教程。我说的对吗?每个星期天都会重定向到以下位置:RewriteCond%{TIME\u DAY}=0 RewriteRule^$/destination/url.html[R=301,L]没有TIME\u DAY代表当前日期。您应该在当前工作日(0-6)计算工作日的时间。您还可以使用switch case。切换总是比If-else条件更好。如果您无法解决问题,请随时询问。您好,非常感谢,特别是在缓存副本和服务器时钟设置方面。我想对于一个拥有1000多页的网店来说,在每个页面的顶部添加include是一件非常重要的事情。就您而言,是否有单页解决方案?这取决于您的应用程序设计。我倾向于在每页上都有一个
include
语句,这样身份验证和数据库连接之类的事情只能在一个地方处理(这将是一个“单页解决方案”)。如果您有超过1000页当前未包含任何内容,则需要进行大量的修改。在这种情况下,这里的另一个答案中的
.htaccess
方法会更少的工作。它可以工作!然而,仅针对主页,而不是针对一个页面中的所有页面。我可以在这里请教您的指导吗?@Anthony调整规则中的matcher regex,使其适合您的需要。阅读一下@sáT中的语法(但基本上只是pcre),所以我花了几个小时。“最佳”结果是获得500个内部服务器错误,如ERR_TOO_MANY_重定向,还包括代码选项+FollowSymlinks RewriteEngine on RewriteCond%{REQUEST_URI}/closedonsunday$RewriteRule$/closedonsunday.html[R=302,L]在我的情况下似乎不起作用。@Anthony您可以查看服务器日志以查看有关错误的详细信息。另外,请阅读mod_rewrite是如何工作的,重定向是如何执行的。这本书帮助我了解了这只野兽,非常感谢。流程图很完美!