Answers:
实际上,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
and RewriteCond
指令告诉它这样做。
了解更多关于mod_rewrite
这里。
if ( !defined(‘ABSPATH’)) exit;
!defined(‘ABSPATH’)
计算结果为true,则表示WordPress以外的其他东西正在尝试访问该脚本(因为wp-config.php中定义了ABSPATH),因此应忽略该请求。那是对的吗?
ABSPATH
在任何其他PHP脚本中进行定义,所以它将允许您自己的服务器上使用其他脚本。不允许的是从服务器外部(例如,从浏览器)直接访问该文件。因为直接访问该文件,用户无法定义ABSPATH
。