LoginSignup
7
6

More than 5 years have passed since last update.

[apache]外と内で見せるサイトを切り替える設定例

Posted at

外側からは準備中サイトを見せつつ、内側(社内アクセスとか)では開発中のβサイトを見せたい!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>
7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6