如果文件存在,则重写规则htaccess

时间:2013-11-25 11:38:29

标签: .htaccess mod-rewrite

我想使用htaccess检查名为offline.txt的文件是否与htaccess文件存在于同一目录中,如果存在则执行:

RewriteRule ^.*$ /websiteOffline.php [L] 

并且对某个范围的IP地址也有例外

我的想法是,如果我想将我的整个网站用于维护,我可以简单地放置一个名为offline.txt的文件,这样就可以做到并允许某些ip绕过这种情况。

关于如何实现这一目标的任何建议?

由于

我已尝试过以下代码,但似乎无法正常工作:

RewriteEngine on
RewriteCond /offline.txt -f
RewriteRule  ^(.*)  /websiteOffline.php [L]

更新

刚刚使用了Jon的建议:

RewriteEngine on
RewriteCond %{DOCUMENT_ROOT}/offline.txt -f
RewriteRule  ^(.*)  /websiteOffline.php [L]

这方面的一个小问题是文件websiteOffline.php位于应用了重写的文件夹中,因此无法显示该文件。任何建议

1 个答案:

答案 0 :(得分:3)

您无法使用-f测试的相对位置。您需要包含完整路径:

RewriteEngine on
RewriteCond %{DOCUMENT_ROOT}/folder/offline.txt -f
RewriteCond %{REQUEST_URI} !/websiteOffline.php
RewriteCond %{REMOTE_ADDR} !^12\.34\.56\.78$
RewriteRule  ^(.*)  /websiteOffline.php [L]

其中/folder/是您的htaccess文件所在的路径。

此处,如果您的IP地址为12.34.56.78,并且您尝试访问该文件夹,则不会重定向您。