- - PR -
Apacheにてアクセス元のネットワークによって表示される内容を変える
1|2|3
次のページへ»
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-03-09 11:55
初めて登校します。
よろしくお願い致します。 NICが2枚搭載されているホストにて Apacheを動作させています。 クライアントのアクセス元(ネットワーク) によって表示させる内容を変えたいと思っております。 また、ウェブサーバのホスト名は 同一のものを使いたいと思っております。 Listen と VirtualHost ディレクティブで 可能かと思いましたが、 この場合、クライアント側のアクセス元によって 表示を変えることはできません。 いろいろと調べましたが分かりませんでした。 このようなことは可能でしょうか。 また、どのように設定すればよいでしょうか。 使用している Apache は、 Apache 2.0.46 です。 ご教授のほどよろしくお願い致します。 | ||||
|
投稿日時: 2005-03-09 12:56
mod_rewriteモジュールでできそうな気がしますが。
http://httpd.apache.org/docs/mod/mod_rewrite.html RewriteCondで条件を設定して、それにマッチした場合に RewriteRuleでURLをリライト(置換)します。 | ||||
|
投稿日時: 2005-03-09 19:18
アドバイスありがとうございます。
早速参考に設定してみます。 結果は後ほどご報告させて頂きます。 | ||||
|
投稿日時: 2005-03-10 18:11
httpd.conf の最後の行に
以下を追記してみましたが、 /var/www/html/private のコンテンツしか見ることができませんでした。 アドバイス頂ければ幸いです。 よろしくお願い致します。 aaa.aaa.aaa.aaa : プライベート側IPアドレス bbb.bbb.bbb.bbb : グローバル側IPアドレス ----- 以下 ----------------------------------------- RewriteCond %{REMOTE_ADDR} ! ^aaa\\.aaa\\.aaa\\. [OR] RewriteCond %{REMOTE_ADDR} ! ^bbb\\.bbb\\. RewriteRule /var/www/html/index.html NameVirtualHost aaa.aaa.aaa.aaa NameVirtualHost bbb.bbb.bbb.bbb <VirtualHost aaa.aaa.aaa.aaa bbb.bbb.bbb.bbb> ServerAdmin webmaster@abc.de.co.jp DocumentRoot /var/www/html/private ServerName www.abc.de.co.jp ErrorLog logs/priv_error_log CustomLog logs/priv_access_log combined CustomLog logs/priv_referer_log referer CustomLog logs/priv_agent_log agent </VirtualHost> | ||||
|
投稿日時: 2005-03-11 09:40
書き方が若干おかしいようです。
aaa.aaa.aaa.* とbbb.bbb.*.* というネットワーク以外からの全てのリクエストを /index.html へリダイレクトするのであれば、 (ただし、DocumentRootが/var/www/html になっていると仮定して)
でいけると思いますが、もしかしたら上の設定を<VirtualHost>内に書かないとだめかも。 確認ですが、 LoadModule rewrite_module modules/mod_rewrite.so はコメントアウトされていないですよね。 | ||||
|
投稿日時: 2005-03-11 11:08
めぐ様
返信ありがとうございます。 言葉たらずの内容までフォローして頂きありがとうございます。 ご指摘頂いている通り、 DocumentRootは、/var/www/html となっております。 また、 LoadModule rewrite_module modules/mod_rewrite.so もコメントアウトされておらず、有効状態です。 この状況下で、 アドバイス頂いた内容でさっそく試してみましたが、 やはり /var/www/html/private のコンテンツしか見ることができませんでした。 Rewrite 関連内容を VirtualHost ディレクティブの中に記述する場合と、 外に記述する場合も試しましたがだめでした。 また、Rewrite 関連内容を VirtualHost ディレクティブの前と後に書いた場合の 動作確認も行いましたが同様にだめでした。 そこで、動作の切り分けを行うため、 まずはリダイレクト部分の動作確認をするために プライベート側(aaa.aaa.aaa.*)から アクセスがあった場合に DocumentRoot にリダイレクトするかどうか 以下のように記述して aaa.aaa.aaa.* 側のホストからWebサーバにアクセスしてみました。 しかし、プライベート側のバーチャルホストが見えてしまいます。 <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REMOTE_ADDR} ^aaa\\.aaa\\.aaa\\. RewriteRule ^/.*$ /index.html </IfModule> NameVirtualHost aaa.aaa.aaa.aaa <VirtualHost aaa.aaa.aaa.aaa> ServerAdmin webmaster@abc.de.co.jp DocumentRoot /var/www/html/private ServerName www.abc.de.co.jp ErrorLog logs/priv_error_log CustomLog logs/priv_access_log combined CustomLog logs/priv_referer_log referer CustomLog logs/priv_agent_log agent </VirtualHost> リダイレクトも出来ない状況です。 よろしくお願い致します。 | ||||
|
投稿日時: 2005-03-11 11:59
RewriteCond で ^aaa\\.aaa\\.aaa\\. と書かれてますが、 バックスラッシュが一つ余計じゃないですか? VirtualHostディレクティブ内に書いた場合は、DocumentRootが /var/www/html/private になりますので、 /var/www/html/private/outer.html とか用意してそこに RewriteRule ^/.*$ /outer.html でリダイレクトさせるとか。 | ||||
|
投稿日時: 2005-03-11 12:21
めぐ様
早速の返信ありがとうございます。 RewriteCond のところですが、 実際にはバックスラッシュ1個だけで書いています。 なぜか、こちらに投稿した際には2個になっていました。 また、切り分けとして作業していました リダイレクト動作に関しては確認できました。 あとは、バーチャルホストに対して どのようにリダイレクトするかが問題です。 ご返答頂いた案ですが、 /var/www/html/index.html /var/www/html/private/index.html で出来ないかと思っております。 もう少し自分なりに取り組んで見ます。 また上記の内容で良い案がありましたら ご教授頂けると幸いです。 よろしくお願い致します。 |
1|2|3
次のページへ»