我想使用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位于应用了重写的文件夹中,因此无法显示该文件。任何建议
答案 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
,并且您尝试访问该文件夹,则不会重定向您。