我有一个我拥有的PHP网站。我想在进行更改时暂时禁用网站(还有很多工作要做)。我尝试重命名index.php
文件,但最终用户可以通过键入URL(或者如果他已经为页面添加了书签)来导航到页面。有没有办法暂时禁用整个网站?
编辑:此接受的答案适用于Apache Web服务器。我目前使用的是IIS6(而不是IIS7,其中可以在web.config文件中完成相同的重写)。在IIS6中有解决此问题的方法吗?
答案 0 :(得分:5)
您可以使用.htaccess
文件重定向到维护页面:
RewriteEngine On
RewriteBase /
RewriteCond %{REMOTE_ADDR} !^123\.456\.789\.000
RewriteCond %{REQUEST_URI} !^/maintenance\.html$
RewriteRule ^(.*)$ http://domain.com/maintenance.html [R=307,L]
一些有用的链接:
http://www.shellhacks.com/en/Redirect-Site-to-Maintenance-Page-using-Apache-and-HTAccess
http://perishablepress.com/htaccess-redirect-maintenance-page-site-updates/
答案 1 :(得分:2)
虽然bartek
打败了我的Apache mod_rewrite
规则,迫使网站将所有流量重定向到维护/离线页面,但我想发布我的变体,这个想法可以允许特定的访问网站的IP地址:
RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^123.45.67.890$
RewriteCond %{REMOTE_ADDR} !^127.0.0.1$
RewriteCond %{REMOTE_ADDR} !^::1$
RewriteCond %{REQUEST_URI} !^/offline.html$
RewriteRule ^(.*)$ http://your.great.website/offline.html [R=302,L]
请注意,根据您的Apache版本,您可能必须逃避IP地址中的.
和:
,如下所示:
RewriteCond %{REMOTE_ADDR} !^123\.45\.67\.890$
RewriteCond %{REMOTE_ADDR} !^127\.0\.0\.1$
RewriteCond %{REMOTE_ADDR} !^\:\:1$
这个想法是访问者不是来自123.45.67.890
- localhost
(IPv4)或127.0.0.1
(IPv6)的::1
地址 - 和请求的URI不是/offline.html
,然后将该人重定向到http://your.great.website/offline.html
。
这意味着您只需将123.45.67.890
替换为您要连接的IP地址,以便在执行工作时拥有进入网站的窗口。但是其他任何不是123.45.67.890
的人?好吧,他们看到offline.html
页面。
答案 2 :(得分:0)
我也会提出这个解决方案。
RewriteEngine On
RewriteCond %{QUERY_STRING} !access=dbcaf771cc0c4e23a0fc895d0afa106f
RewriteCond %{REQUEST_URI} !^/maintenance.html$
RewriteRule ^(.*)$ /maintenance.html [R=302,L]
除非您的请求在查询字符串中包含access=dbcaf771cc0c4e23a0fc895d0afa106f
,否则您只需重定向到维护页面。