了解默认的 WordPress .htaccess

[ad_1]

在维护 WordPress 网站时,您可能会发现自己尝试了通常会起作用的事情,并发现它们产生了意想不到的结果。 这通常是由于 WordPress 的默认 .htaccess 规则如何操纵配置并提供“漂亮的永久链接”。

本文直接适用于 WordPress 上 Apache 基于服务器。 对于 WordPress 多站点或其他 Web 服务器(Nginx、IIS 等),请查看 官方 WordPress 文档 因为规则和配置可能不同。

默认规则

默认的 WordPress .htaccess 规则负责 WordPress 如何支持“漂亮的永久链接”。 如果没有这些规则,WordPress 永久链接将无法正确解析。 此功能使您的 URL 看起来更清晰、更具可读性,而不会过度复杂或混乱您网站的文件结构。

默认规则如下所示:

# 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

为了分解这些规则所定义的内容,我们将从顶部开始,然后逐步向下。

  • 首先,您会看到标签所示的评论; 此符号 `#` 用于表示 .htaccess 文件中的注释。
  • 接下来你会看到一个开口大括号 Apache的内部“IfModule”函数; 这指定包含的规则只能与“mod_rewrite”模块一起使用 Apache.
  • 重写模块已启用。
  • 声明了 RewriteBase; 这定义了应该应用于重写规则的“根”文件夹。
  • 下一行是第一个重写规则,该规则定义如果专门调用了“index.php”文件,则不需要重写。
  • 接下来的两行都定义了重写条件; 这些条件指定如果在给定 URL 上找不到文件或文件夹,则应应用下一个规则。
  • 最后,之前的最后一个重写规则 close 大括号用于“IfModule”。 仅当找不到 URL 的文件或文件夹时,才会应用此规则。 如果发生这种情况,请求将在向客户端提供响应之前传递给 WordPress。

虽然这种细分可能足以解释某些人,但这仍然是一个非常复杂的规则链。 这些规则最好的描述和总结如下:“如果 Apache 本身找不到请求的文件或文件夹,则该请求应由 WordPress 直接处理。”

一个有趣的结果是,从技术上讲,所有 WordPress 页面在上下文中都是 404 结果。 Apache 只有在 PHP 和 WordPress 收到请求之前,才能解析任何内容以获得响应。

自定义规则提示

在处理 WordPress 网站上的 .htaccess 规则时遇到的问题通常没有一致的原因。 由于原因可能因站点而异,甚至因规则而异,因此很难为这些问题提供广泛的解释。 同样重要的是要注意插件和主题也会影响某些规则的管理方式。

导致奇怪行为并提供混合结果的常见规则通常与允许基于特定 IP 地址的访问有关。 这些规则通常如下所示:

<Files wp-login.php>
Order deny,allow
Deny from all
Allow from 198.11.109.98 localhost
</Files>

上述规则将拒绝所有 IP 访问 wp-login.php,除非 IP 列在“允许来自”行中。 虽然它应该默认工作,但有时这可能会导致问题。 如果是这样,通常的解决方法是定义错误文档。 这看起来像:

ErrorDocument 401 default
ErrorDocument 403 default
<Files wp-login.php>
Order deny,allow
Deny from all
Allow from 198.101.159.98 localhost
</Files>

明确定义这些错误文档将确保当未经批准的 IP 尝试访问该页面时,它们被拒绝并被发送一个正确的错误页面。

由于可能会出现各种问题,并且每个问题都有自己的解决方案,因此我们无法在这里全部涵盖。 如果您认为您遇到与此处提到的这些规则相关的配置问题,请随时联系支持人员。 我们的姊妹品牌, 多余的,还提供完全托管的 WordPress 托管,这将有助于解决任何实施问题。

[ad_2]

Related Posts