Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 站点正在维护中。如何重定向访问者?_Php_Apache_Redirect_Maintenance - Fatal编程技术网

Php 站点正在维护中。如何重定向访问者?

Php 站点正在维护中。如何重定向访问者?,php,apache,redirect,maintenance,Php,Apache,Redirect,Maintenance,我的PHP站点正在维护中。如何将访问者重定向到“维护中的站点”单个页面 我听说了一些关于ASP.NET的app_offline.htm PHP有类似的功能吗 我希望“mysite.com”的每个页面都被重定向到“maintenance.php” 我不想在现有的网站页面上做最小的修改,最好没有人 Linux下的Apache 2.2.15版 PHP版本5.2.13 您确实没有提供足够的详细信息(服务器、框架等)。如果您使用的是Apache,请将以下内容添加到.htaccess中: # preve

我的PHP站点正在维护中。如何将访问者重定向到“维护中的站点”单个页面

我听说了一些关于ASP.NET的
app_offline.htm

PHP有类似的功能吗

  • 我希望“mysite.com”的每个页面都被重定向到“maintenance.php”
  • 我不想在现有的网站页面上做最小的修改,最好没有人
Linux下的Apache 2.2.15版
PHP版本5.2.13


您确实没有提供足够的详细信息(服务器、框架等)。如果您使用的是Apache,请将以下内容添加到.htaccess中:

# prevent infinite redirect loops
RewriteCond %{REQUEST_URI} !^/back-soon-updating.php$
# not on development server
RewriteCond %{HTTP_HOST} .com$
# let admins enter to verify the update has worked
RewriteCond %{QUERY_STRING} !c=u
RewriteRule .* back-soon-updating.php [L,R=307]

PHP方法:创建maintance.PHP并将其添加到index.PHP中:

$offline = true; // <== change this to false when you go online again.

if($offline){
  header("Location: maintainance.php");  // <== redirects all to maintainance.php
  exit;
}
$offline=true;// 没有“全局方式”,要么您必须配置您的Web服务器,转到特定站点,要么如果您在任何地方都包含页面,则添加

header("Location: offline.php");
die();

临时重定向您的用户。

您还应该在响应中设置正确的头(HTTP响应代码503)。只有Apache才能使用
mod_rewrite
mod_头文件

但是,对于不需要
mod_头的简单解决方案
,请遵循以下步骤

  • 使用Coronatus提到的apache conf/.htaccess将除开发人员之外的所有用户重定向到PHP维护脚本。确保重定向确实是临时的(使用Zach提到的307重定向代码)
  • 在PHP脚本中,在脚本的开头将响应头设置为following
header('HTTP/1.1 503服务暂时不可用')//发送正确的响应代码

header('Retry-After:3600')//一小时后重试


这将满足您的需要。

作为Linux下的Apache,我将执行以下操作:

在站点根目录下创建了“.htaccess”文件,内容如下:

Options +FollowSymlinks
RewriteEngine on

RewriteCond %{REQUEST_URI} !/images/mainetnance.png$
RewriteCond %{REQUEST_URI} !/maintenance.php$

# here filter the developer's IP/
#RewriteCond %{REMOTE_HOST} !^888\.888\.888\.888

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

注意,我添加了一个用于过滤.png文件的文件,因为我在maintenance.php中使用了一个图像(/images/maintenance.png),由于全局重定向,该图像应该保持可见。

创建一个自定义维护页面或只写“站点处于维护中”并使用标题位置重定向所有用户,在php.netphp 5上查找。*有点含糊不清:5.2与5.3非常不同。.oricum,问题更多地与Apache有关,与我检查的PHPLast时间有关,URL重写在Windows上不起作用-您可能想注意,这是什么意思?我可以在windows上使用mod_rewrite。真的吗?正如我所说的——上次我检查它在allI不起作用时,我让Apache和PHP在edit中查看详细信息。我设置了“maintenance.html”而不是“back soon updateding.php”。任何到站点的更改。@serhio:您可能还想将
301
(永久重定向)更改为
307
(临时重定向)。否则,访问者的书签将更新为
maintenance.html
,搜索引擎会认为其他页面不再存在,而实际上你只是在更新网站的内容。我是否应该将此添加到我的所有网页中?维护完成后,我应该从所有现有页面中删除这段代码吗?是的,另一种便于以后“删除”的方法是执行一个,然后在那里执行标题(“Location:offline.php”);模具();这样,您只需从header.php中删除重定向。而且你不会冒险在任何被遗忘的页面上保留重定向。我应该在我所有的网页中添加这个吗?维护完成后,我是否应该从所有现有页面中删除此代码?1。它在您的本地安装中起作用了吗?2.在linux主机上是否启用了.htaccess?