根据工作日交换网站?

时间:2014-08-14 22:56:57

标签: php .htaccess cron webpage

所以,我有一个不寻常的目标。我希望有一个网站,每周六天,显示一个强大的CMS网站,有几个页面。每周一天,我希望它在整个域中显示单个静态html页面。那么,我该如何做到最好呢?我应该:

A)用我自己的php片段替换并重命名CMS的index.php,该片段运行基于工作日的if语句,然后加载CMS或静态“索引”页面?我可以看到的问题是,每次用户请求页面时,它可能会导致无限小的减速,并且可能会给CMS带来不稳定性。

B)添加一个cron作业,实际上每周在设定的时间交换文件?如果我每周都在计时器上进行文件交换,这似乎最终会被破坏。

C)添加编辑.htaccess文件的cron作业,以交换对计时器页面的引用?这似乎是一个很好的解决方案,但我不知道它有多安全。

D)完全不同的东西?

注意:如果重要,CMS就是Americommerce。

4 个答案:

答案 0 :(得分:0)

我会在index.php。

中这样做

本质:

if(date( "w" ) == 0) { // 0 = Sunday, 6 = Saturday
    require('path/to/your/static/php/file.php');
    // or file_get_contents()
} else {
    // do the normal index.php stuff
}

date("w")为您提供一周的数字日,0为星期日,6为星期六。然后,根据您要执行的操作,输入您的静态文件/内容。

答案 1 :(得分:0)

您可以这样做:

$indexFile = "index.php";
$path = "";

if (date("w") == 0) {
 $path = "sunday/"; 
}

require($path . $indexFile);

答案 2 :(得分:0)

如果您有一个包含在所有.php页面顶部的包含文件(在打印任何html之前),或者您可以将其放在index.php文件中。

你可以做(​​基本上是其他人正在做的事)

if( date("w") == 0 )
{
   header('Location: /static-file.php');
   die( );
}

重定向而不是包含的优点是,如果用户尝试重新加载或刷新页面,它们将立即被提供给静态页面,而不是真实网站。

如果您想在任何其他日子阻止用户(偶然)访问该页面..您可以在该静态文件的顶部应用相同的逻辑。

if( date("w") != 0 )
{
   header('Location: /');
   die( );
}

如果您不想重定向,可以包含该文件,但我不建议将整个网站包装在if / else语句中。只需包含该文件并执行die()即可细:

if( date("w") == 0 )
{
   include( 'static-file.php' );
   die( );
}

我强烈建议不要运行cronjob来处理这样的事情 - 因为你已经指出有腐败的可能性 - 这是你必须积极检查以确保网站加载明天。使用一个非常简单的PHP,一旦你第一次测试它,你知道它将完美无缺地工作 - 因为没有什么复杂的使用dow if语句。

Cronning .htaccess文件再次令人头疼,等待发生。

最简单的选择是在任何CMS内容开始之前运行那段PHP,所以在连接到DB等之前,这样你就不会浪费任何资源。

答案 3 :(得分:0)

您可以使用Apache的重写引擎根据时间提供不同的内容。

创建普通(CMS)起始页index.php和静态index_static.html,然后将其添加到.htaccess文件中:

RewriteEngine on
RewriteBase /
RewriteCond %{TIME_WDAY} =7
RewriteRule ^index\.php$ index_static.html [L]