如何实现在已经建立的网站“维护模式”(How to implement “Maintenance M

2019-07-17 10:46发布

我建立了一个网站(PHP)超过60页。 只是现在我已经意识到(不幸的),我应该建在“维护模式”功能,让管理员暂时禁用该网站,它指向一个维护模式页面。 这将只允许那些登录为管理员查看该网站。

我看到的选项:

  1. 新的“包括”文件添加到每一个PHP页面的顶部。

  2. 我已经一个包括用于上显示导航栏
    每一页(导航类)。 我可以写的维护模式
    代码在这个类。

我还有别的选择吗? 第1选项似乎并不像最有效的,而第二个刚刚好像不好的编程。 是否有其他更好的办法,包括对每一个php文件的新文件?

谢谢!

PS - 该网站尚未推出

Answer 1:

您可以使用.htaccess重定向到另一个页面,而在维护模式。

三个什锦例子:

RewriteEngine On
RewriteBase /
RewriteCond %{REMOTE_ADDR} !^11\.111\.111\.111
RewriteCond %{REQUEST_URI} !^/maintenance\.html$
RewriteRule ^(.*)$ http://domain.com/maintenance.html [R=307,L]

的.htaccess“停机维护”页转到

Options +FollowSymlinks
RewriteEngine on
RewriteCond %{REQUEST_URI} !/maintenance.html$ 
RewriteCond %{REMOTE_HOST} !^888\.888\.888\.888

RewriteRule $ /maintenance.html [R=302,L] 

使用的.htaccess重定向到维护页面升级过程中

# redirect all visitors to alternate site but retain full access for you
ErrorDocument 403 http://www.alternate-site.com
Order deny,allow
Deny from all
Allow from 99.88.77.66

维护模式的Apache



Answer 2:

我知道这是一个老问题,但我加入这对于谁通过搜索遇到此页面未来搜索。

我使用的是PHP重定向。

在每一个页面的顶部添加下面几行:

<?php
include('PATH/TO/FILE/config.php');
if(maintenance == 1) {
header('Location: http://example.com/maintenance.php');
}
else {
// do nothing
}
?>

而在你的config.php文件只是让像这样的变量

$maintenance = 0; // turns maintenance mode off

当您希望您的网站处于维护模式只是改变了“0”到“1”。 这将重定向所有网站访问者维护页面。

我输入的代码非常快没有测试它,但它应该工作。



Answer 3:

的auto_prepend_file串

指定在主文件之前自动解析的文件名。 该文件包括,如果它被称为与需要()函数,因此会使用include_path。

特殊值none禁止了自动前缀。

你可以在php.ini中设置此,或阿帕奇(虚拟)主机文件或使用的.htaccess的php_flag的auto_prepend_file file.php

[或php_admin_flag(?)]

编辑

  • 也许你不应该把包含文件在您的Web根目录或子文件夹。
  • 请记住调用exit或在最后死去。


Answer 4:

而非指定IP地址,你也可以核对HTTP_USER_AGENT中的RewriteCond ..

RewriteCond %{HTTP_USER_AGENT} !MyCrazyString
RewriteCond %{THE_REQUEST} !upgrade\.txt
RewriteRule .* /upgrade.txt [R=307,L]

任何人只要有标记到自己的浏览器的用户代理字符串的结尾“MyCrazyString”可以访问,其他人获取维护模式页/网站。

只要不要求高安全性,这是理想的; 快速,轻松地传播给管理员,完全可移植的,重要的是,如果你重新连接你的DSL当实际的服务器访问的唯一的人是睡在世界的另一端不会打破。

; O)颜色



Answer 5:

最简单的方法是集中了一些关于现场发电的逻辑。 这样,您就可以在打开维护模式和重定向任何非管理员到不同的页面。 这不会是很难做到的,因为我想你有一些代码,不断弹出所有的地方,所以只是延长登录功能来检查一个全局变量(如果你没有在你的网页有任何共同的全局变量你可以只通过SETENV设置在.htaccess)。



Answer 6:

我认为, 标准的Apache表情更容易比理解重写规则 。

维护之前我文件/ home / coolcmd / site_maintenance_off重命名为/ home / coolcmd / site_maintenance_on。

代码段/.htaccess:

# If file, directory or symlink /home/coolcmd/site_maintenance_on exists,
# and requested file is not /maintenance.html,
# and not an admin's IP...
<If "-e '/home/coolcmd/site_maintenance_on' && %{REQUEST_URI} != '/maintenance.html' && %{REMOTE_ADDR} != '111.111.111.111'">
# Generate status code 503 for URL beginning with /, in other words for ANY URL.
# This is not "the real redirection 3xx".
Redirect 503 "/"
# This page handles status code 503. All external resources used by page
# (for example, maintenance.css), if any, must be added to <if> above.
ErrorDocument 503 /maintenance.html
# Maintenance probably will end in 10 minutes.
Header set Retry-After 600
</If>


文章来源: How to implement “Maintenance Mode” on already established website