WordPress에서 페이지를 만들면 데이터베이스 테이블의 항목 일뿐입니다. 해당 위치에 실제 파일이 없습니다. 그러나 그 위치에서 파일을 직접 만들 수 있으며 WordPress에서 페이지를 훔칩니다. 파일을 삭제하면 WordPress 페이지로 원활하게 돌아갑니다.
이것이 어떻게 달성되는지 궁금합니다. 아마도 WordPress와 Apache (?)간에 약간의 통신이 진행되고 있습니다.
답변
실제로 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
여기 에 대해 자세히 알아보십시오 .