外側からは準備中サイトを見せつつ、内側(社内アクセスとか)では開発中のβサイトを見せたい!apacheでそんな設定を書いてみた例です。
前提
この設定は静的コンテンツのみのサイトを前提にしています。動的コンテンツは考慮していません。
今回の例として以下のようなディレクトリ構成を取ります。
外からのアクセスでは、一部のページを除いて全て準備中ページ (/common/html/coming_soon.html) を返すようにします。
DocumentRoot/
├ ja/
│ ├ html/
│ └ とかとか
├ en/
│ ├ html/
│ └ とかとか
└ common/ #言語によらず共通のhtml,css,jsなど
├ html/ #今回はここに準備中ページを置きます
│ ├ coming_soon.html
│ └ とかとか
└ とかとか
設定例
# 内外のアクセスを判別する設定
# 例としてクライアントのIPで判別します
SetEnvIf Remote_Addr "xxx.xxxx.xxx.xxx" inside_user
# 外部に見せていいページの設定
## 各言語のトップページ
SetEnvIf Request_URI "^/(ja|en)(/?|/index.html)$" open_uri
# /common以下 (準備中ページもこれで公開します)
SetEnvIf Request_URI "^/common/*$" open_uri
# 各言語の404ページ
SetEnvIf Request_URI "^/(ja|en)/404.html$" open_uri
# 各言語のヘッダ・フッタ
SetEnvIf Request_URI "^/(ja|en)/html/header.html$" open_uri
SetEnvIf Request_URI "^/(ja|en)/html/footer.html$" open_uri
# favicon
SetEnvIf Request_URI "^/favicon.ico$" open_uri
# リクエストの振り分け設定
Listen 80
<VirtualHost *:80>
DocumentRoot /xxx/yyy/zzz
RewriteCond %{ENV:inside_user} ^$ # 内側からのアクセスではなくて
RewriteCond %{ENV:open_uri} ^$ # 外部に公開していないURLで
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} -f [OR] # リクエストしたリソースが存在する場合は
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} -d
RewriteRule ^(.*)$ http://myhost.com/common/html/coming_soon.html [P,L] # 準備中ページを見せる
# 他に必要な設定を書く
....
</VirtualHost>