2011-06-29 25 views
1

だから私は特定のものに更新しながら、メンテナンスモードに自分のサイトを強制的にするために、次の使用:これはうまく働いている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|gif) [NC] 
RewriteRule .* /maintenance.html [R=302,L] 
</IfModule> 

を、今私は、メンテナンスモードでの状況を持っています特定のdirがmaintenance.htmlに送信されないようにして、通常の内容を表示させたいと思います。

だから、のようなものになるでしょう:

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

これは、ルートレベルの.htaccessから可能であるか、私が持っているつもりだ場合は、サブディレクトリの.htaccessファイルで狡猾取得するかどうかわからない、任意の助けに感謝します。

+0

私は、メンテナンスモードに関係なく、いつもアクセス可能なフォルダがほしいと思っています。どのフォルダを除外したいのですか(複数あると思いますか?) – LazyOne

+0

@LazyOne - はい、表示したいディレクトリがいくつかあります。上記の例では/ display_me_alwaysです。 – bMon

答えて

2

これは仕事をするはずです。これは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. あなたは[OR]NC,を挿入混在する場合のスペルを一致させる必要があるので、もしレターケースは、問題になります。
  2. 同じ名前のルートフォルダにファイルがある場合は、スラッシュ/をフォルダ名の末尾に追加することを検討してください。
関連する問題