实际上,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
.
Unless: 该行:RewriteCond %{REQUEST_FILENAME} !-f
变为false。也就是说,加上这个RewriteCond
与上述RewriteRule
, 我们告诉Apache将所有请求发送到/index.php
, 但是not if it\'s an existing file.
Also, when 该行:RewriteCond %{REQUEST_FILENAME} !-d
变为false。也就是说,加上这个RewriteCond
与上述RewriteRule
, 我们正在告诉Apache将所有请求发送到/index.php
, 但是not if it\'s an existing directory.
因此,最终,除非是现有文件或现有目录,否则Apache会在内部将所有其他请求发送到/index.php
.
如您所见,Apache和;WordPress。Apache自己决定一切,我们告诉它使用RewriteRule
和RewriteCond
指令。
了解更多信息mod_rewrite
HERE.