所以,我有一个不寻常的目标。我希望有一个网站,每周六天,显示一个强大的CMS网站,有几个页面。每周一天,我希望它在整个域中显示单个静态html页面。那么,我该如何做到最好呢?我应该:
A)用我自己的php片段替换并重命名CMS的index.php,该片段运行基于工作日的if语句,然后加载CMS或静态“索引”页面?我可以看到的问题是,每次用户请求页面时,它可能会导致无限小的减速,并且可能会给CMS带来不稳定性。
B)添加一个cron作业,实际上每周在设定的时间交换文件?如果我每周都在计时器上进行文件交换,这似乎最终会被破坏。
C)添加编辑.htaccess文件的cron作业,以交换对计时器页面的引用?这似乎是一个很好的解决方案,但我不知道它有多安全。
D)完全不同的东西?注意:如果重要,CMS就是Americommerce。
答案 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]