Режим обслуживания Htaccess разрешает определенные каталоги - PullRequest
1 голос
/ 30 июня 2011

Поэтому я использую следующее для перевода моего сайта в режим обслуживания при обновлении определенных вещей:

# 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, любая помощь приветствуется.

1 Ответ

2 голосов
/ 30 июня 2011

Это должно сделать работу.Он сообщает 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. Вы можете добавить косую черту / в конце имен папок, если в корневой папке есть файлы с такими же именами.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...