Quantcast
Channel: WordPress | サポートフォーラム »投稿一覧
Viewing all articles
Browse latest Browse all 1380

返信先: ログインページにIPアドレス制限をかけているのに

$
0
0

「ログインしていない状態でwp-adminのフォルダやファイルにアクセスすると、wp-login.phpにリダイレクトされるものだと認識しております。」とお書きですが、この認識が間違っています。

Apacheのリダイレクトの場合、例えば、.htaccessなどに

Redirect 301 /a.php /b.php

と書くか、または、

RewriteEngine On
RewriteRule ^a.php$ b.php [R=301,L]

と書くことで実現できます。

この時Apacheは、ブラウザからa.phpが要求されたら、a.phpを開くことなく即座にb.phpを開きます。ですから、b.phpが閲覧制限されていたら、a.phpもまた閲覧制限が適用されます。

ところがwp-admin/index.phpは、そういう正規の意味でのリダイレクトが行われているわけではありません。WordPress の PHP コード(アプリケーションレベル)で実行されている擬似的なリダイレクトです。その動作は次のようになっています。

処理の流れ(ログインしていない場合に wp-admin/index.php にアクセスすると…)

  1. ブラウザが https://example.com/wp-admin/index.php にアクセス
  2. Apache は そのファイルを通常通り処理し、PHP が実行される
  3. wp-admin/index.php → wp-admin/admin.php が読み込まれ、
  4. admin.php 内で WordPress コア関数 auth_redirect() が呼ばれる
  5. この関数が「ログインしていない」と判定すると、wp_redirect( wp_login_url() ); exit; というコードにより、PHP側で wp-login.php へリダイレクト
  6. ブラウザが wp-login.php?redirect_to=... に飛ばされる

という流れです。

つまり、一旦index.phpは開かれるわけです。ということは、wp-login.phpにいくらIPアドレス制限をかけても、制限をかけてないindex.phpはアクセスし放題なわけです。もちろん、index.phpで処理された結果転送されたwp-login.phpは開かれないですよ。でも、index.phpは開かれた後なので、ログには制限されているはずのIPアドレスが残るのです。


Viewing all articles
Browse latest Browse all 1380

Trending Articles