답변:
실제로 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
거짓이됩니다. 즉,RewriteCond
위와 함께이것을 추가하면RewriteRule
Apache가 모든 요청을로 보내도록 요청/index.php
하지만 기존 파일이 아닌 경우에 요청 합니다 .
또한 이 줄이 :RewriteCond %{REQUEST_FILENAME} !-d
거짓이됩니다. 즉,RewriteCond
위와 함께이것을 추가하면RewriteRule
Apache가 모든 요청을로 보내도록 요청/index.php
하지만 기존 디렉토리 인 경우는 아닙니다 .
따라서 기존 파일 또는 기존 디렉토리가 아닌 경우 Apache는 내부적으로 다른 모든 요청을에 보냅니다 /index.php
.
보시다시피 Apache와 WordPress간에 통신이 이루어지지 않습니다. 아파치는 모든 것을 스스로 결정하고 있으며 우리는 그것을 사용 RewriteRule
하고 RewriteCond
지시합니다.
mod_rewrite
여기 에 대해 자세히 알아보십시오 .
if ( !defined(‘ABSPATH’)) exit;
!defined(‘ABSPATH’)
true로 평가 되면 워드 프레스 이외의 스크립트가 스크립트에 액세스하려고 시도한다는 것을 의미합니다 (ABSPATH가 wp-config.php에 정의되어 있기 때문). 따라서 해당 요청을 무시해야합니다. 그 맞습니까?
ABSPATH
다른 PHP 스크립트에서도 정의 할 수 있으므로 자신의 서버에서 다른 스크립트를 허용합니다. 허용되지 않는 것은 서버 외부 (예 : 브라우저)에서 해당 파일에 직접 액세스하는 것입니다. 해당 파일에 직접 액세스하면 사용자는을 (를) 정의 할 수 없습니다 ABSPATH
.