
test.htmlが(予想どおり)無効になっていますが、wp-login.phpを使用できる理由を知りたいです。私は FilesMatch と Files を試しましたが、似たような「chown」と「chmod」があります。公式Apache 2.4のドキュメントを読んだ。たくさん見ました。この正しい設定で何が問題なのか、なぜwp-login.phpを常に使用できるのか理解できません。どのようにアクセスが拒否されるのですか? !
<Directory /home/user/html>
Require all granted
Options -Indexes
<FilesMatch "^wp(.*)$">
<IfModule mod_authz_core.c>
Require all denied
Require ip 10.145.13
</IfModule>
</FilesMatch>
<FilesMatch "^test(.*)$">
<IfModule mod_authz_core.c>
Require all denied
Require ip 10.145.13
</IfModule>
</FilesMatch>
</Directory>
編集する
フィリップありがとうございます。私も似たような考えをしてみました - どうやって私は…
/wp-loginに移動すると、Apacheは最初にwploginをロードしません。
わかりません。 /wp-loginディレクトリがないため、wp-login.phpファイルは1つしかないので、直接開きます。 http://...my..blog/wp-login.php
ところで、ちょうど覚えていますね。 Apache 2.2を使用したときに本当に魅力的でした。これで2.4がありますが、WordPressは同じままです。私たち全員が知っているように、2.4には異なる構文があります。したがって、以前の2.2構成と同じ方法で動作する新しい構成を採用しました。しかし...
本当に変です。
そして記事を見つけました。https://www.saotn.org/wordpress-htaccess-security-best-practices-apache-24/ しかし、以前はすべてを同じように構成していました。私の設定が正しいことを確認するためです。
だから何をすべきかわかりません。
UPD:これを見つけました。https://stackoverflow.com/questions/32487034/apache-2-4-restricting-access-to-wp-login-php-by-ip-not-working
答え1
これはWordPressのアーキテクチャに関連しています。 Apacheに移動すると、/wp-login
wploginは最初にロードされません。代わりに、書き換えルールを使用してURLを書き換えます。
今はエントリポイントを覚えていませんが、wp-
ログイン名をパラメータとしてApacheから別のPHPファイルが呼び出されます。
その後、他のPHPファイルにはwp-login.phpが含まれています。 Apacheはこれを制御できません。
これらのルールは通常 .htaccess ファイルに保存されます。
これを実証するために、Apacheの.htaccessファイルの使用を一時的に無効にし、他のすべての書き換えルールを無効にすることができます。
永続的な解決策のために書き換えルールを調整することで、追加の条件でwp-login.phpを拒否または無視できます。