回答:
実際、ApacheとWordPressの間で通信は行われていません。「魔法」はApache mod_rewrite
ルールで発生しています。
標準のWordPressインストールの場合、次のルールがあります.htaccess
:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
この行に注意してください。RewriteRule . /index.php [L]
ここでは、ApacheにURL要求を内部的にリダイレクトするように指示してい/index.php
ます。
限り:この行:RewriteCond %{REQUEST_FILENAME} !-f
はfalseになります。つまり、これRewriteCond
を上記に追加すると、RewriteRule
Apacheにすべてのリクエストを送信するように指示しますが/index.php
、既存のファイルの場合は送信しません。
また、この行:RewriteCond %{REQUEST_FILENAME} !-d
がfalseになったとき。つまり、これRewriteCond
を上記に追加すると、RewriteRule
Apacheにすべてのリクエストを送信するように指示します/index.php
が、既存のディレクトリの場合は送信しません。
そのため、最終的に、既存のファイルまたは既存のディレクトリでない限り、Apacheは他のすべてのリクエストを内部的に送信します/index.php
。
ご覧のとおり、ApacheとWordPressの間で通信は行われていません。Apacheはそれ自体をすべて決定してRewriteRule
おり、RewriteCond
ディレクティブとディレクティブを使用してそうするように指示しています。
mod_rewrite
こちらをご覧ください。
if ( !defined(‘ABSPATH’)) exit;
!defined(‘ABSPATH’)
trueと評価された場合、WordPress以外がスクリプトにアクセスしようとしていることを意味します(wp-config.phpでABSPATHが定義されているため)。したがって、そのリクエストは無視する必要があります。あれは正しいですか?
ABSPATH
他のPHPスクリプトでも定義できるため、独自のサーバーで他のスクリプトを許可します。許可されないのは、サーバーの外部(ブラウザーなど)からそのファイルに直接アクセスすることです。そのファイルに直接アクセスすることにより、ユーザーはを定義することができませんABSPATH
。