Apache Htaccess维护模式允许某些目录

Apache Htaccess维护模式允许某些目录,apache,.htaccess,Apache,.htaccess,因此,在更新某些内容时,我使用以下方法强制我的站点进入维护模式: # 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

因此,在更新某些内容时,我使用以下方法强制我的站点进入维护模式:

# 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>

不确定这是否可以从根级别.htaccess执行,或者如果我必须熟练使用sub dir.htaccess文件,请提供任何帮助。

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

  • 字母大小写很重要,因此如果您需要匹配混合大小写拼写,请将
    NC、
    插入
    [或]
  • <> LI>如果在同名的根文件夹中有文件,可以考虑在文件名的末尾添加斜杠<代码> /<代码>。< /LI>
    所以据我所知,无论维护模式与否,您都希望某些文件夹始终可以访问,对吗?您想排除哪些文件夹(我假设您有多个)?@LazyOne-是的,有几个目录我想显示——在上面的示例中,它应该是/display\u me\u always。
    root/
       .htaccess
        maintenance.html
        index.html
        everything.else.html
        /do_not_display_me
        /display_me_always
    
    # 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]