web-dev-qa-db-ja.com

Apache:クライアント-IPベースのDocumentRoot

これがApacheで可能かどうかはまだわかりませんが、ここに来る前にかなりの量の調査を行いました。だが:

**:80 *で実行されているVirtualHost、somedomain.tldへのServerNameがあります。私が達成したいのは、クライアント10.2.1.4がsomedomain.tldにアクセスした場合、クライアントにはDocumentRoot/var/www/pages-1 /からコンテンツが提供されることです。次に、10.3.0。*が同じsomedomain.tldにアクセスすると、クライアントはDocumentRoot/var/www/pages-2 /からコンテンツを取得します。現在これを達成する方法はありますか?

6

これは、remote_addrをチェックするRewriteCondが前に付いたRewriteRuleを使用して行うことができます(変数には$ではなく%を使用することを忘れないでください:

<VirtualHost *:80>
  Servername somedomain.tld

  RewriteEngine On
  RewriteCond %{REMOTE_ADDR} 10.2.1.4
  RewriteRule ^(.*)$ /var/www/pages-1/$1

  RewriteCond %{REMOTE_ADDR} 10.3.0.
  RewriteRule ^(.*)$ /var/www/pages-2/$1

</VirtualHost>
7
adaptr

ドキュメントルートを変更することはできませんが、クライアントIPに基づいてURLを書き換えることはできます。たとえば...(テストされていません)...

RewriteCond %{REMOTE_Host} ^10\.3\.0\.
RewriteRule ^/(.*) /pages-2/$1 [P,L]

RewriteCond %{REMOTE_Host} ^10\.2\.1\.4$
RewriteRule ^/(.*) /pages-1/$1 [P,L]

IPアドレスの数が非常に多い場合は、 外部書き換えプログラム を使用する方が簡単かもしれませんが。

3
symcbean