.htaccessを使用するIPアドレスベースの条件付きDirectoryIndex

.htaccessを使用するIPアドレスベースの条件付きDirectoryIndex

私はこれを持っていますhttpd.conf

<VirtualHost xx.xxx.xx.xxx>
    Options All +ExecCGI
    ServerAdmin [email protected]
    DocumentRoot /var/www/html/domain.com
    ServerName  dl.domain.org
    DirectoryIndex dlindex1.html
</VirtualHost>

DirectoryIndex...うまくいきます(「dl.domain.org」サブドメインとして必要です)。しかし、DirectoryIndexこれで、IPアドレスに基づいて変更する必要があります.htaccess。これは可能ですか?

StackOverflowの投稿によると、DirectoryIndex条件付きで設定することはできませんが、その逆になります。持つを使用してくださいRewriteRule。それが本当なら大丈夫です。しかし、RewriteCond何とRewriteRule?私は以下を含む多くのことを試しました(実際のIPは私たちの開発者2人のIPです)。

RewriteCond %{REMOTE_ADDR} ^111\.222\.333\.444$    [OR]
RewriteCond %{REMOTE_ADDR} ^555\.666\.777\.888$
RewriteCond %{SERVER_NAME} ^dl.domain.org
RewriteRule ^(.*)/$ $1/dlindex2.html

..または(絶対的なテストとしても):

RewriteCond %{REMOTE_ADDR} ^555\.666\.777\.888$
RewriteRule (.*)/dlindex1.html$ $1/dlindex2.html

しかし、私が何を試しても、開発者IPが呼び出されたときにそのサブドメインのメインページとして提供されるのではなく、そのままDirectoryIndex dlindex1.html提供されるようです。httpd.confdlindex2.html

誰でも私が望むことを達成するために私ができることを指摘できますか?つまり、実際に、または実際にはDirectoryIndexIPアドレスに基づいてデフォルトで変更されますか.htaccess

ベストアンサー1

IPアドレス12.34.56.78を/var/www/client1/*に移動し、IPアドレス87.65.43.21を/var/www/client2/*に移動するとします。

RewriteEngine On
RewriteCond %{REMOTE_ADDR} ^12\.34\.56\.78$
RewriteRule (.*) /client1/$1

RewriteCond %{REMOTE_ADDR} ^87\.65\.43\.21$
RewriteRule (.*) /client2/$1

特別なページを提供する必要がある各IPに対して、「RewriteCond」と「RewriteRule」のセットを作成します。

運用分析:

  1. クライアント 87.65.43.21 接続
  2. ルールはクライアントが 12.34.56.78 であることを確認し、そうでない場合はそうではありません。
  3. その後、サーバーは2番目の条件を入力します。
  4. クライアントが 87.65.43.21 であることを確認してください。はい
  5. サーバーはパステスト条件の一部としてRewriteRuleを実行し、/client2/(file_requested)ページを提供します。

OPは彼の質問を明確にしました。彼は別のフォルダを必要としませんが、別のインデックスページを提供する必要があります。以下は、タスクを実行する.htaccessの例です。

RewriteEngine On
RewriteCond %{REMOTE_ADDR} ^12\.34\.56\.78$
RewriteCond %{REQUEST_URI} index\.html$
RewriteRule .* /index-page-client1.html

RewriteCond %{REMOTE_ADDR} ^12\.34\.56\.78$
RewriteCond %{REQUEST_URI} index\.html$
RewriteRule .* /index-page-client2.html

上記のルールは、要求されたファイルが「index.html」であるかどうかをさらに確認します。 「index.html」へのリクエストのみをリダイレクトするとします。

おすすめ記事