这是我的设置。我有example.com,它有文件和子目录。其中一个文件是maintenance.php,其中一个目录是/admin。我正在尝试将所有请求从www.example.com重定向到example.comexample.com/maintenance.php,除了example.com/maintenance.php(不这样做会导致错误)和example/admin中的所有页面。example.com/file1应该重定向到example.com/maintenance.php,example.com/maintenance.php不应该导致任何错误,并且example.com/admin/file1不应该重定向。
这是我无法去工作的东西
RewriteEngine On
RewriteCond %{REQUEST_URI} !(.*)admin.*
RewriteCond %{REQUEST_URI} !^/maintenance.php$
RewriteRule .* /maintenance.php [R=302,L]
字符串
example.com/admin仍然重定向到example.com/maintenance.php
谢谢大家
2条答案
按热度按时间liwlm1x91#
当您的网站不可用时,不要使用外部重定向;你需要设置一个503标题,否则你可能会杀死你的搜索引擎排名。
保留任何现有的重写规则,并在所有规则之前添加以下内容:
字符串
maintenance.php
的第一行应该是型
它仍然可以有内容。
如果你仍然不能进入管理,你至少可以看到其他网址需要白名单。你可能还需要排除media、css和/或js目录。
完成后,用
#
注解掉该规则,以便下次使用。xt0899hw2#
请确保您的example.com/admin URL不是404 Not Found。当服务器试图重定向到错误文档时,它将重定向到maintenance.php,因为错误文档没有被排除在重定向之外。为了避免这种情况,您可以添加一个排 debugging 误文档的
RewriteCond
规则。举例来说:字符串
我也避开了路径中的点,因为这样做是很好的练习。(也避免了maintenanceXphp不重定向。