我将如何重写所有请求maintenance.php
,如果存在,除了图像,除了IP白名单。
如果maintenance.php
不存在,如果请求的文件不存在,它应该重写为引导程序(index.php
(。
如果maintenance.php
确实存在并且IP在白名单中,那么如果请求的文件不存在,它应该重写为引导程序(index.php
(。
我尝试了以下许多变体:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{DOCUMENT_ROOT}/maintenance.php -f
RewriteCond %{REQUEST_FILENAME} !.(jpg|png|gif)$
RewriteCond %{REMOTE_ADDR} !^123.123.123.123$
RewriteCond %{REMOTE_ADDR} !^111.111.111.111$
RewriteRule . maintenance.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
</IfModule>
我会反过来做。 如果维护页面不存在或 IP 有效,请重写到引导程序。
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/maintenance.php !-f [OR]
RewriteCond %{REMOTE_ADDR} ^123.123.123.123$ [OR]
RewriteCond %{REMOTE_ADDR} ^111.111.111.111$
RewriteRule . index.php [L]
RewriteCond %{DOCUMENT_ROOT}/maintenance.php -f
RewriteCond %{REQUEST_FILENAME} !.(jpg|png|gif)$
RewriteCond %{REMOTE_ADDR} !^123.123.123.123$ [OR]
RewriteCond %{REMOTE_ADDR} !^111.111.111.111$
RewriteRule . maintenance.php [L]
所以,基本上它将运行索引.php如果:
(Not a file)
&& (Not a dir)
&& (
(Maintenance Doesn't Exist)
|| (Remote Addr == 123.123.123.123)
|| (Remote Addr == 111.111.111)
)
我们可以使用命题逻辑来扩展它,但为什么要打扰......
我最终使用的
我希望它能帮助任何未来的访客:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/maintenance.php !-f [OR]
RewriteCond %{HTTP:X-Forwarded-For} ^(x.x.x.x|y.y.y.y|z.z.z.z)$ [OR]
RewriteRule . index.php [L]
RewriteCond %{DOCUMENT_ROOT}/maintenance.php -f
RewriteCond %{REQUEST_FILENAME} !.(jpg|png|gif)$
RewriteCond %{HTTP:X-Forwarded-For} !^(x.x.x.x|y.y.y.y|z.z.z.z)$
RewriteRule . maintenance.php [L]
</IfModule>
@ircmaxell也得到了勾号,因为他帮助我找到了这个解决方案。
尝试将您的 IP 地址括在同一RewriteCond
的括号内:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{DOCUMENT_ROOT}/maintenance.php -f
RewriteCond %{REQUEST_FILENAME} !.(jpg|png|gif)$
RewriteCond %{REMOTE_ADDR} !^(123.123.123.123|111.111.111.111)$
RewriteRule . maintenance.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
</IfModule>