.htaccess 的基础知识:如何使用和示例

.htaccess 的基础知识:如何使用和示例


什么是 .htaccess 文件?

.htaccess 文件是一个 Apache HTTP Server(通常称为 Apache)配置文件。 该文件非常强大,可用于帮助控制 Apache 提供的网页的多个方面。 这包括管理重定向、热链接保护等。

.htaccess 文件在哪里?

您的网络主机根文件夹中应该有一个 .htaccess 文件 – 包含您网站内容的文件夹(通常是 /public_html 或 /www)。

您的主机帐户上可以有多个 .htaccess 文件,但每个目录或文件夹只能有一个。

例如,您可以在根文件夹中拥有单独的 .htaccess 文件,而在子文件夹中拥有另一个文件。 这允许您根据目录结构设置不同的服务器行为。

.htaccess 文件功能强大,但如果没有正确保护,也可以访问和修改。 确保您采取措施阻止访问此文件。

我找不到我的 .htaccess 文件

首先,.htaccess 是一个 Apache 文件,这意味着您只能在 Apache 服务器中找到它。* 如果您的主机运行在不同的 Web 服务器软件(即 Microsoft IIS 或 NGINX)上,请停止搜索。

以点开头的文件名通常是隐藏文件。 这意味着默认情况下它们通常不可见。

要查看此文件,只需在 FTP 客户端或托管文件管理器中打开“显示隐藏文件”(见下图)。

查找 .htaccess 文件 - 如何在 cPanel 文件管理器中显示隐藏文件
示例 – 通过在 cPanel 文件管理器中启用此选项来显示您的隐藏文件。

您可能会觉得 .htaccess 文件很不方便,因为它需要编码,但请考虑需要跨多个站点建立相同服务器行为的用户。 该人需要做的就是复制 .htaccess 文件。

.htaccess 文件是服务器配置文件,因为它们直接处理行为,所以不需要在每次发出请求时都运行一些东西。 因此,例如,与使用插件相比,它的资源密集度要低得多。

* 注:根据 W3Techs 报告,Apache 的市场占有率约为 30%。 WHSR 提到的最受欢迎的托管品牌 – A2 Hosting、BlueHost、GreenGeeks、Hostinger、InMotion Hosting; 由 Apache 提供支持。

.htaccess 的用途是什么?

虽然文件名前面有一个点,但 htaccess 是文件的名称,点并不会使其成为扩展名。 具体来说,Apache 在运行时会查找这个确切的文件名。 .htaccess 文件中的任何内容都为 Apache 设置参数以启用或禁用功能,甚至在满足某些条件时执行特定任务。

例如,根据文件中包含的说明,如果您的网站访问者正在寻找不存在的资源,Apache 可以自动加载自定义错误页面。 每种错误类型都有自己的代码,并且每个错误都可以单独重定向。

使用 .htaccess 文件可以完成的工作有很多列表,今天我将与您分享其中的一些内容。

1. 管理自定义错误页面

使用 .htaccess ErrorDocument 404 将您的用户重定向到另一个页面。
一些创意定制的 404 错误页面示例

当保留默认设置时,大多数 Web 服务器软件会向您的访问者发送一个看起来非常暗淡的错误页面。 如果你想显示一个对用户更友好(或者至少是像样的)错误页面,那么你需要在你的 .htaccess 文件中使用自定义错误文档处理。

假设您设计了一个名为“404.html”的自定义 404 错误页面,并将其保存到 Web 目录中名为“error_pages”的子文件夹中。 使用 .htaccess 中的以下代码行,您可以在访问者遇到 404 错误时调用该页面;

ErrorDocument 404 /error_pages/404.html

使用这种技术,您可以保存您想要解决的每种错误类型的自定义副本,并通过在 .htaccess 文件中包含必要的代码来设置它们以进行调用。 最常见的错误代码包括:

  • 400 – 错误请求
  • 403 – 禁止
  • 404 – 未找到文件
  • 500内部服务器错误
  • 503服务不可用

2. 处理重定向

在某些情况下,您可能想要设置一个全面重定向,以便您可以在他们不知道的情况下将访问者引导到特定页面。 例如,如果您最初使用 HTTP,但后来安装了 SSL 并迁移到 HTTPS,那么您希望所有用户都使用您网站的 HTTPS 版本。

在这种情况下,你需要做的是利用重写规则;

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.yourdomain.com/$1 [R,L]

可以根据您的需要修改此代码。 例如,如果您想将用户从旧域重定向到新域,那么您可以使用;

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

您可以通过多种方式设置重定向。 可以在 Apache 文档页面中找到 Rewrite 语法的详细信息。

重定向可以为您做的最有用的事情之一是帮助您将搜索引擎引导到您已移动的页面。 通常,搜索引擎会将链接编入索引,如果他们在那里找不到正确的页面,他们会认为内容已经消失。

通过使用重定向,您可以轻松地移动内容并让网络爬虫知道在哪里可以找到他们之前索引的内容。 为此,请使用;

Redirect 301 /archive/ /past-entries/

301 指令不仅可以让用户无缝访问旧内容,还可以作为对网络爬虫的指示,即永久移动内容。 这通过允许他们快速重新索引链接来帮助他们。

3. 提高您的网站安全性

我发现许多新网站所有者倾向于过度依赖外部工具来提高他们的网站安全性。 虽然确实有很多很棒的应用程序,但您可以从 .htaccess 文件中的基础知识开始。

密码保护目录

为此,您需要两个文件,.htaccess 和 .htpasswd。 .htpasswd 文件包含一些加密,因此请使用 Htpasswd Generator 之类的工具来创建文件。 .htaccess 文件应包含此代码;

AuthType Basic
AuthName "Password Protected Area"
AuthUserFile /path/to/.htpasswd
Require valid-user

禁用目录浏览

这是最简单的方法之一,只需要在 .htaccess 文件中包含两行代码;

# Disable directory browsing
Options -Indexes

阻止特定 IP

要阻止单个 IP 访问您的站点,请将以下代码添加到您的 .htaccess 文件中;

Deny from XXX.XXX.XXX.XXX

用数字 IP 值替换 XXX。 此代码有多种变体,可用于阻止一系列 IP 地址或多个 IP 地址。

4.防盗链

当其他网站链接到您托管的图像时,就会发生热链接。 这是不可取的,因为他们正在利用您的空间和带宽。 为防止图像盗链,请将以下内容添加到您的 .htaccess 文件中;

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www.)example.com/.*$ [NC]
RewriteRule .(gif|jpg|jpeg|bmp)$ - [F]

该代码的最后一行是您指定要阻止站点进行热链接的文件的位置。 它基本上是在指示 Apache 阻止指向那些不是来自域名 http://www.example.com/ 的文件的所有链接。

很多热链接的人经常不会再查看他们的帖子,所以如果你真的想为难他们,你可以向试图进行热链接的网站显示一条自定义消息;

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www.)example.com/.*$ [NC]
RewriteRule .(gif|jpg)$ http://www.example.com/stopstealing.gif [R,L]

它可以在违规站点上显示替代图像,如下所示:

5. 保护 .htaccess 文件

现在您已经意识到 .htaccess 文件是多么有用的工具。 既然你已经意识到,是时候考虑保护这个有价值的文件了! 如果您使用的是 .htpasswd 文件,那么您可能也希望屏蔽它,而同时做到这一点的方法是;

# protect .htaccess and .htpasswd

<Files ~ "^.*.([Hh][Tt])">
Order allow,deny
Deny from all
Satisfy all
</Files>

请注意,在大多数安全服务器上,这些文件已经受到保护。 在添加此代码之前,请检查您是否可以在浏览器窗口中访问这些文件。 只需输入 URL 并在后面添加 /.htaccess 即可查看是否可以查看该文件。 如果不能,您可能会看到一条错误消息。

6. 设置你的服务器时区

如果您注意到由于某种原因或其他原因,您的服务器上的时间似乎有点不对,那么您可能需要使用 .htaccess 文件强制一个时区。 这又是一件很容易做到的事情,只需要一行代码;

SetEnv TZ America/yourtimezone

有大量可用时区列表,您可以通过参考支持的时区列表找到最接近您的匹配。

.htaccess 文件的常见问题

我需要一个 .htaccess 文件吗?

不,.htaccess 的 .use 不是强制性的。 但是,这是共享主机用户可以控制其网络托管服务器的唯一方法之一。 如果您不打算在共享主机上更改服务器配置,则该文件是不必要的。

.htaccess 文件包含什么?

由于 .htaccess 文件用于服务器配置,因此它包含带有相关说明的代码。 例如,“SetEnv TZ America/yourtimezone”行将允许您根据自己的喜好设置服务器时区。

如何创建 .htaccess 文件?

创建 .htaccess 文件的最佳方法是使用纯文本编辑器。 例如,您可以在本地计算机上使用 Microsoft NotePad,然后将其上传到您的 Web 托管服务器。 或者,大多数网络托管文件管理器也允许您创建纯文本文件。

WordPress 有 .htaccess 吗?

.htaccess 文件与 WordPress 没有直接关系,因为它用于服务器配置。 您的 WordPress 网站可能有也可能没有。 如果它不存在,您仍然可以手动创建和使用 .htaccess 文件。

拥抱 .htaccess 的力量

我在这里展示的样本只是一个非常大的冰山一角。 与通常通过控制面板所允许的相比,它为网络托管用户提供了对其网站更大的权力,并为他们提供了更广泛的工具可供使用。

学习使用代码距离 Google 的强大功能仅一步之遥,而最好的一点是您只需要挑选和学习需要使用的东西。

Leave a Comment