# Don't forget to turn on the rewrite engine
RewriteEngine on
# Maintenance Redirection
# Replace 555\.555\.555\.555 with your own IP address
# Uncomment first conditional to turn off the redirection
# RewriteCond %{REQUEST_URI} ^$a
RewriteCond %{REQUEST_URI} !maintenance.html
RewriteCond %{REQUEST_FILENAME} !(styles|images).+$
RewriteCond %{REMOTE_ADDR} !^555\.555\.555\.555$
RewriteCond %{REMOTE_ADDR} !^127\.0\.0\.1$
RewriteRule (.*) /maintenance.html [R,L]
此代码使您可以轻松地暂时关闭网站以进行更新。将“555”行替换为您自己的IP地址,以便您在其他人被重定向时仍能正常查看网站。图像和样式也可以通过过滤器传递。
第一个注释条件旨在始终失败,因此关闭此重定向只需取消注释该行即可。
是否有办法仅关闭网站的一个页面以进行维护,而不是整个网站?
当然,您只需在开头(在“^$a”行之后)添加另一个条件
RewriteCond %{REQUEST_URI} /url/to/match.html
不好的地方是maintenance.html中的所有链接文件也会被阻止。比如css/js文件。有没有办法在那里设置例外,或者在这种情况下我应该使用内联样式?
我需要在维护期间允许多个IP地址通过。我该怎么做?
为什么不添加另一行像这样呢
我不是.htacess专家……但可以试试。
如果您需要在停机期间通过多个IP访问(例如555.555.555.555和444.444.444.444),请尝试以下方法
RewriteCond %{REMOTE_ADDR} !^[555.555.555.555|444.444.444.444]$
第二个REMOTE_ADDR中的数字(127…)是什么意思?
RewriteCond %{REMOTE_ADDR} !^127\.0\.0\.1$
我是否应该将它们替换为与我的网站相关的特定数字?
谢谢!
数字(127.0.0.1)是本地主机的IP地址
RewriteCond %{REMOTE_ADDR} !^127\.0\.0\.1$
您需要将包含数字(555)的行更改为您访问网站的机器的IP地址。(如果您不知道自己的IP地址,请搜索“我的IP地址是什么”)
我要添加到上述代码中的唯一内容是确保重定向是临时的。
RewriteRule $ /maintenance.html [R=307,L]
除非您从您的互联网服务提供商那里购买了静态IP地址,否则查看您自己的IP地址毫无意义?退出后再次登录,您可能会获得完全不同的IP..
如果您有一个需要此功能才能正常工作的实时网站,那么您必须从您的实时服务器获取文件,然后编辑并重新上传,因为您的实时网站将与之关联一个静态IP地址。
希望这有帮助。
@jamie paterson 如果您没有静态IP地址,您可能已经知道这一点,并且理解如果重新连接它将不起作用。此外,如果只是暂时的,也许该人在维护完成之前不会重新连接。
这是我的代码
RewriteCond %{REQUEST_URI} ^$a
RewriteCond %{REQUEST_URI} !downloads.php
RewriteCond %{REQUEST_FILENAME} !(css|images).+$
RewriteCond %{REMOTE_ADDR} !^555\.555\.555\.555$
RewriteCond %{REMOTE_ADDR} !^127\.0\.0\.1$
RewriteRule (.*) /main/downloads.php [R,L]
代码不起作用,我取消了第一行的注释,但我仍然被重定向到不可用的页面
使用这种方法时我应该注意什么?如果我这样做,会遇到任何长期的SEO/Google搜索排名问题吗?请告知。谢谢。
您可以轻松地使用此方法在您的htaccess中暂时关闭网站(至少,这就是我使用的)
如何让所有用户都看到维护页面,但允许我自己的网站公网IP访问,例如假设example.com应该跳转到维护页面,但
它的公网IP应该像往常一样访问网站。
这可能吗?请告知代码。
为了在我的维护页面上使用自定义字体和css,我修改了代码,添加了我的服务器的IP和文件类型扩展名,如下所示
已更正。无需服务器IP。
大约一年前,我使用一个html页面和一个提供IP异常的外部css文件构建了一个.htaccess脚本,并且由于我的外部IP地址显示为IPv6,因此添加了IPv6支持。
最近我重新审视了这个小型项目,并修复了一些导致Apache错误的注释位置。脚本再次运行良好,但我发现IPv6和路由器存在问题。每台计算机都会获得不同的IPv6地址,如果您搜索每台机器的IP地址,您会发现它们都不同。这让我绞尽脑汁,为什么我的主计算机可以显示实时站点,但我的iPhone在wifi下却一直显示维护页面。
显然,如果您在同一个网络上与团队合作,每个成员都必须检查他们的IP地址,或者登录路由器也会告诉您。
我在github仓库中提到了这个问题。希望这对某些人节省大量故障排除时间有所帮助。
https://github.com/jcgallaher/website-maintenance-mode