【问题标题】:Htaccess maintenance mode allow certain directoriesHtaccess 维护模式允许某些目录
【发布时间】:2011-06-29 22:12:35
【问题描述】:

所以我在更新某些内容时使用以下命令强制我的网站进入维护模式:

# MAINTENANCE-PAGE REDIRECT
<IfModule mod_rewrite.c>
 RewriteEngine on
 RewriteCond %{REMOTE_ADDR} !^23\.1\.12\.167
 RewriteCond %{REQUEST_URI} !/maintenance.html$ [NC]
 RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC]
 RewriteRule .* /maintenance.html [R=302,L]
</IfModule>

这很好用,但是现在我在维护模式下遇到这样的情况,我希望排除某些目录被发送到maintenance.html,而是让它们显示它们的正常内容。

所以应该是这样的:

root/
   .htaccess
    maintenance.html
    index.html
    everything.else.html
    /do_not_display_me
    /display_me_always

不确定这是否可以从根级别 .htaccess 或者我是否必须巧妙处理子目录 .htaccess 文件,感谢任何帮助。

【问题讨论】:

  • 所以 .. 据我了解,无论是否维护模式,您都希望某些文件夹始终可以访问,对吗?您要排除哪些文件夹(我假设您有多个)?
  • @LazyOne - 是的,我想显示一些目录 - 在上面的示例中,它将是 /display_me_always。

标签: apache .htaccess


【解决方案1】:

这应该可以完成工作。它告诉 Apache 不要重写那些文件夹(这使得维护规则被省略,因为重写链永远不会到达它们)。

# activate rewrite engine
RewriteEngine on

# always allow these folders
RewriteCond %{REQUEST_URI} ^/display_me_always [OR]
RewriteCond %{REQUEST_URI} ^/another_folder [OR]
RewriteCond %{REQUEST_URI} ^/even_more_folders
RewriteRule .+ - [L]

# maintenance rules
RewriteCond %{REMOTE_ADDR} !^23\.1\.12\.167
RewriteCond %{REQUEST_URI} !/maintenance.html$ [NC]
RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC]
RewriteRule .* /maintenance.html [R=302,L]
  1. 字母大小写很重要,因此如果您需要匹配混合大小写拼写,请将NC, 插入[OR]
  2. 如果根文件夹中有同名文件,您可以考虑在文件夹名称末尾添加斜杠/

【讨论】:

    猜你喜欢
    • 2012-09-20
    • 1970-01-01
    • 2018-04-19
    • 1970-01-01
    • 2012-08-03
    • 1970-01-01
    • 1970-01-01
    • 2011-11-22
    • 1970-01-01
    相关资源
    最近更新 更多