什么是 .htaccess 文件以及如何在 WordPress 中使用它?

已发表: 2020-10-27

您之前可能听说过 .htaccess 文件,但不知道它是什么或它做了什么。 在本文中,我们将把焦点放在 .htaccess 文件上,并一劳永逸地揭开它的神秘面纱。 在本文结束时,您将了解 .htaccess 文件是什么,.htaccess 文件的作用以及如何使用 .htaccess 文件来完成某些任务。 我们走吧!

.htaccess 文件是什么?

让我们先来看看 .htaccess 文件到底是什么。 “htaccess”代表“超文本访问”。 此名称描述了文件最初开发时的用途。 简而言之,它用于控制用户对某些文件和目录的访问。 自从 .htaccess 首次出现以来,事情已经发生了变化,现在它在 WordPress 中以多种不同的方式使用,我们将详细介绍。

.htaccess 是一个配置 WordPress 核心文件,用于覆盖 Apache Web 服务器的特定设置(Apache 是 Web 服务器上常用的软件)或实现影响您网站运行方式的各种其他功能。 它在您启用永久链接后立即包含在所有 WordPress 安装中,并且通常位于安装的根目录中。 您可以通过 FileZilla 或 WinSCP 等 FTP 客户端访问安装文件来查看或编辑它。

注意:确保您的 FTP 客户端的首选项已修改,以便显示隐藏文件。

默认情况下,一旦启用永久链接,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

如果您还不知道,行首的“#”是注释。 使用# BEGIN WordPress# END WordPress注释行,以便在稍后由插件或您自己应用更多规则时,内容保持井井有条。 将来对 .htaccess 文件的任何添加都应放在这些行之外。

.htaccess 文件主要在 WordPress 中用于控制您网站上的永久链接。 它也可以用作各种其他任务的强大工具,例如控制对某些文件的访问、增强安全性和性能、发送自定义标头等等。

注意:对您网站的 .htaccess 文件所做的任何更改都必须小心谨慎,这一点很重要。 即使此文件中的一个简单错字也可能导致您的网站崩溃。 因此,如果您不确定所做的任何更改,您最好在临时服务器上测试这些更改,然后再应用到您的实时网站。

您可以使用 .htaccess 文件执行的操作

因此,让我们看看如何借助 .htaccess 文件更好地控制您的网站。

在“www”和“非www”之间重定向

.htaccess 文件的一个常见用途是设置从“裸域”(非 www 版本)到其 www 版本的永久重定向或其他方式。

在继续之前,请确保在您的 DNS 中设置了两个域以解析为正确的服务器 IP 地址。

此外,在您的 WordPress 管理区域中,检查裸域是否设置为主要域。

设置站点 URL

您可以通过将以下代码添加到默认内容下方的 .htaccess 文件中,将 www 域重定向到裸域。

 RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.mycompanyname\.com [NC] RewriteRule ^(.*)$ http://mycompanyname.com/$1 [L,R=301]

要完成完全相反的操作(如果 www 设置为主要)并从“非 www”域重定向到“www”,您需要插入以下代码:

 RewriteEngine on RewriteCond %{HTTP_HOST} ^mycompanyname.com [NC] RewriteRule ^(.*)$ http://www.mycompanyname.com/$1 [R=301,L]

如果您不熟悉代码中使用的正则表达式,并且想了解更多关于语法的信息,请随时花时间阅读更多关于 REGEX 的信息。 HT Access Cheat Sheet 是另一个非常有用的工具

301重定向(永久重定向)

301 重定向告诉搜索引擎一个 URL 已被另一个 URL 永久替换,并且还将用户重定向到该访问者到一个新的(正确的!) url。 .

这是放置在 .htaccess 文件中的一段代码:

 RewriteEngine on RewriteCond %{HTTP_HOST} ^mycompanyname.com [NC,OR] RewriteCond %{HTTP_HOST} ^www.mycompanyname.com [NC] RewriteRule ^(.*)$ http://example.com/$1 [L,R=301,NC]

在上面的示例中,我们将用户从网站“mycompanyname.com”重定向到“example.com”。 当然,您需要将这些部分替换为您自己的网址。

这也适用于域下的所有路径。 这意味着例如 mycompanyname.com/new.html 将重定向到 example.com/new.html

302重定向(临时重定向)

当内容临时移动到另一个位置时,会使用 302 重定向。 语法与 301 中的相同。例如:

 Redirect 302 /old.html http//www.mycompanyname.com/new.html

从实际角度来看,结果完全相同,但有一个重要区别。 通过 301 重定向,搜索引擎会被告知该页面不再存在,这样做会鼓励搜索引擎从搜索结果中删除该页面。 在 302 重定向的情况下,原始 URL 仍会被 Google 抓取,而不是新 URL 会继续编入索引。 因此,当您只想临时重定向到替代内容时,它是重定向的理想解决方案。

强制使用 HTTPS

如今,使用 SSL 证书保护您的网站非常重要。 不这样做的网站现在将在浏览器栏中显示警告,这可能会破坏对您网站的信任。 此外,Google 实际上会惩罚不通过 HTTPS 提供内容的网站,因此您的搜索排名可能会受到影响。

即使您在网站上安装了 SSL 证书,您仍然可以发现用户可以访问您网站的非 HTTPS 版本。 如果他们这样做,即使您安装了 SSL 证书,他们仍会在浏览器中收到警告。 要阻止这种情况发生,您需要强制所有流量从不安全的 HTTP 版本到安全的 HTTPS 版本。 通过添加以下代码,使用您的 .htaccess 文件非常容易做到这一点:

 RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

阻止 IP 地址

如果您收到垃圾邮件流量或您的网站正遭受来自某些 IP 地址的滥用/黑客攻击,您可以使用 .htaccess 文件采取措施,方法是使用 .htaccess 文件中的以下代码阻止来自该 IP 地址的流量。

 Deny from 94.66.58.135

如果您想了解如何以其他方式阻止 IP 地址,请阅读本指南。

防止图片盗链

图片盗链是指有人将您网站上的图片嵌入到他们自己的网站中。 这可能是有问题的(不仅仅是从版权的角度来看),因为这意味着您的服务器可能不得不加班以在其他人的网站上提供图像。 您可以通过使用 .htaccess 文件阻止某人使用以下代码将您的图像嵌入他们的网站来阻止这种情况:

 RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?mycompanyname.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yahoo.com [NC] RewriteRule \.(jpg|jpeg|png|gif)$ - [F]

不要忘记将“mycompanyname.com”替换为您网站的 URL!

此代码阻止所有网站在您的网站上热链接图像。 因为您不想阻止搜索引擎热链接图像,所以您需要手动将这些图像列入白名单。 实现这一点的代码部分是这里的这一部分:

 RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?mycompanyname.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yahoo.com [NC]

您当然可以包括您想要列入白名单的任何其他网站。 最后,代码的最后一行 ( RewriteRule .(jpg|jpeg|png|gif)$ - [F] ) 规定了哪些媒体类型被阻止。

保护插件和主题文件

插件和主题 PHP 文件有时可能成为黑客的目标,他们试图将恶意代码注入其中。 您可以使用 .htaccess 文件通过以下代码帮助防止对这些文件的访问:

 RewriteCond %{REQUEST_URI} !^/wp-content/plugins/file/to/exclude\.php RewriteCond %{REQUEST_URI} !^/wp-content/plugins/directory/to/exclude/ RewriteRule wp-content/plugins/(.*\.php)$ - [R=404,L] RewriteCond %{REQUEST_URI} !^/wp-content/themes/file/to/exclude\.php RewriteCond %{REQUEST_URI} !^/wp-content/themes/directory/to/exclude/ RewriteRule wp-content/themes/(.*\.php)$ - [R=404,L]

保护 WordPress 核心文件

强烈建议非管理员用户无法访问某些 WordPress 核心文件。 这是大多数托管服务提供商为您处理的事情,但并非总是如此。 如果您想阻止访问敏感的 WordPress 文件,您可以在 .htaccess 文件中使用以下代码:

 <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^wp-admin/includes/ - [F,L] RewriteRule !^wp-includes/ - [S=3] RewriteRule ^wp-includes/[^/]+\.php$ - [F,L] RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L] RewriteRule ^wp-includes/theme-compat/ - [F,L] </IfModule>

防止恶意机器人爬取您的网站

机器人基本上是自动化的网络脚本,每天可以扫描数百万个网站。 谷歌使用机器人扫描网站并从这些扫描中获取数据以更新其庞大的搜索数据库。 希望谷歌机器人是完全无害的! 尽管您可能不想扫描您的网站,但还有其他机器人。 其中一些“坏”机器人可能只会消耗不必要的服务器带宽,而其他机器人可能正在积极寻找您网站中可利用的弱点。 您的 .htaccess 文件可用于阻止这些“坏”机器人。

首先要找出您要阻止哪些机器人? 您可能已经知道,但如果不知道,您可以查看被视为可疑的黑名单机器人的更新列表。 获得列表后,您可以将它们添加到 .htaccess 文件中,如下所示:

 #Block bad bods requests SetEnvIfNoCase user-Agent ^FrontPage [NC,OR] SetEnvIfNoCase user-Agent ^Java.* [NC,OR] SetEnvIfNoCase user-Agent ^Microsoft.URL [NC,OR] SetEnvIfNoCase user-Agent ^MSFrontPage [NC,OR] SetEnvIfNoCase user-Agent ^Offline.Explorer [NC,OR] SetEnvIfNoCase user-Agent ^[Ww]eb[Bb]andit [NC,OR] SetEnvIfNoCase user-Agent ^Zeus [NC]

保存更改后,列表中现在访问您网站的任何机器人都将获得 403 禁止页面。

保护 wp-config.php

通常建议您限制对 wp-config.php 文件的访问,因为它包含数据库访问凭据。

要通过 .htaccess 执行此操作,只需将以下行复制并粘贴到您的 .htaccess 文件中:

 <files wp-config.php>order allow,denydeny from all</files>

禁用 PHP 执行

防止黑客攻击的一种非常有效的方法是防止 PHP 在不需要的特定目录中执行。 例如/wp-includes//wp-content/uploads/目录是黑客用来放置允许未经授权访问服务器的代码(称为后门文件)的常用位置。 在这些目录中禁用 PHP 执行不会删除这些文件,而是会阻止它们执行代码。 为此,请将以下代码添加到您的 .htaccess 文件中。

 <Files *.php>deny from all</Files>

您还会发现,包括 Pressidium 在内的许多托管服务提供商已经默认禁用这些目录中的 PHP 执行,以提高其客户的安全级别。

禁用 XML-RPC 访问

这是托管公司的支持团队经常遇到的一个常见问题,其中 WordPress 安装接收到数千个“POST /xmlrpc.php HTTP/1.1”请求,这些请求通常与来自单个或多个 IP 地址的攻击有关。 对此的一种解决方案是禁用 XML-RPC。

要为您的网站禁用 XML-RPC,请将这些代码行添加到 oyur .htaccess 文件中:

 # Block WordPress xmlrpc.php requests <Files xmlrpc.php> order deny,allow deny from all </Files> # END protect xmlrpc.php

值得注意的是,如果您使用移动应用程序或远程连接更新内容,则需要 xmlrpc.php。 因此,如果您正在考虑永久禁用它,请确保您的工作不需要它。

强制下载文件

作为网站用户,当您想从网站下载文件(例如 PDF)时,该文件会在浏览器窗口中打开,这可能会非常烦人。 如果您的网站上有文件作为可下载项目提供给您的用户,那么您可以编辑您的 .htaccess 文件并添加一行代码,该代码可以强制下载特定文件类型,而不是直接从浏览器中显示。 您将在下面看到此代码以及您希望用户能够直接下载的文件类型的一些示例。

 AddType application/octet-stream .avi .mpg .mov .pdf .xls .mp4

发送自定义 HTTP 标头

高级用户可能希望能够利用 Apache 的 Header 指令发送客户 HTTP 标头。 为此,请将以下代码添加到您的 .htaccess 文件中。

 Header add my-custom-header "my custom header value"

上面的示例将告诉 Apache 为对服务器的每个请求添加一个名为“my-custom-header”的标头。 如果我们实施此更新,然后在浏览器工具中检查我们的网络选项卡,我们可以确认其响应,如下所示。

我的自定义标题

这种技术对于添加缓存和安全标头或添加语言字符集非常常见。 看看这篇文章,了解一些流行的用途。 您还可以在此列表中找到详细的标题列表供您尝试。

结论

希望本文能让您对使用 .htaccess 文件可以实现的目标有所了解。 当然,其中许多事情都可以通过使用插件来完成,但了解“幕后”到底发生了什么总是有帮助的,尤其是当插件无法按照您期望的方式运行时。 掌握如何编辑 .htaccess 文件而不是依赖插件也有助于提高您的 WordPress 专业水平……这总是一件好事!