我需要将所有请求重定向到维护页面,但特定 URL 除外,该页面仍能让我访问正常网站。
我用 Google 搜索了一下,但没有找到任何东西。
现在我正在重定向:
RewriteEngine on
RewriteCond %{DOCUMENT_ROOT}/maintenance.html -f
RewriteCond %{REQUEST_FILENAME} !/maintenance.html
RewriteRule ^.*$ /maintenance.html [L]
正常情况下(因为现在它已被注释掉)我在 Apache 后面使用带有 jk_mod 的 Tomcat 6:
<IfModule mod_jk.c>
JkMount / worker1
JkMount /* worker1
</IfModule>
但是如何才能允许通过特定的 URL 访问正常网站呢?
答案1
1)当请求的 IP 地址是您本人时,您可以使重写条件不适用。
例如:
RewriteCond %{REMOTE_ADDR} !^12\.34\.56\.78$
RewriteCond %{REMOTE_ADDR} !^87\.65\.43\.21$
RewriteCond %{REQUEST_URI} !^sorry\.html
RewriteRule .* /sorry.html
2)如果您没有静态 IP 地址或其他可唯一识别您身份的信息,则另一个选择是使用具有不同端口(例如 81)的 VirtualHost,让流量通过而不是放弃维护页面。
3) 如果您无法设置其他端口,或者这样做可能更好,请使用 ServerName 指令设置具有不同服务器名称的 VirtualHost。您甚至不必在 DNS 服务器上设置此名称,只需将其添加到计算机的 hosts 文件中即可。