【问题标题】:RewriteRule htaccess if a file exists如果文件存在,则重写规则 htaccess
【发布时间】:2013-11-25 11:38:29
【问题描述】:

我想用htaccess来检查一个叫offline.txt的文件是否和htaccess文件在同一个目录下,如果存在就做:

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

而且对一定范围的ip地址也有例外

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

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

谢谢

我尝试了以下代码,但似乎不起作用:

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

更新

刚刚使用了乔恩的建议如下:

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

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

【问题讨论】:

  • 第一部分:看RewriteCond-f标志:RewriteCond office.txt -f
  • 应用其中任何一种方法都可以。您不需要同时使用这两种方法。
  • 尝试了 RewriteCond offline.txt -f 但似乎不起作用。我已经用我尝试过的内容更新了我的帖子

标签: .htaccess mod-rewrite


【解决方案1】:

-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 并且您尝试访问该文件夹,它不会重定向您。

【讨论】:

  • 谢谢你的作品,关于如何为 allowed_ips.txt 文件中定义的某些 IP 地址覆盖这些规则的任何想法?
  • 还有一个小问题是文件 websiteOffline.php 位于应用 rewritecond 的文件夹中,因此无法显示该文件。有什么建议么?谢谢
猜你喜欢
  • 2012-02-11
  • 1970-01-01
  • 2015-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-16
相关资源
最近更新 更多