一个 .htaccess 文件 或分布式配置文件是一个功能强大的文件,用于控制和管理网站的配置。所有配置更改都是在每个目录的基础上进行的,以确保主服务器配置文件不受干扰。
何时首选使用 .htaccess 文件
无论您的目标是加载错误页面还是实现密码安全, .htaccess 都有很多用途。一些最常见的例子包括:
-
为特定 URL 或 URL 列表添加重定向。
-
在服务器上的某些目录上启用密码保护。
-
加载自定义错误页面。
-
强制网站使用 HTTPS 而不是 HTTP。
-
阻止特定的 IP 或域名。
在本指南中,我们将引导您完成以下步骤:启用、创建和使用 .htaccess 文件.
前提条件
要学习本教程,您必须具备以下条件:
-
最新版本的 Ubuntu 已安装在您的系统上。
-
Apache Web 服务器 必须安装在您的 Ubuntu 服务器上。
-
已设置 Apache 虚拟主机,针对您的域名。
-
系统用户必须拥有 sudo 权限.
-
使用 SSL 保护的虚拟主机。
-
请参考 在 Ubuntu 18.04 上使用 Let’s Encrypt 保护 Apache,如果您使用自定义域名配置和保护 Apache。
-
或者,您可以 在 Ubuntu 20.04 中为 Apache 创建自签名 SSL 证书,如果您打算将 Apache 用于测试需求。
-
|
注意:有很多域名提供商,您可以考虑在线购买自定义域名。Namecheap, Freenom、以及 Bluehost 等,都以其卓越的服务而闻名。 |
完成初始设置后,以 sudo 用户身份登录服务器,然后我们开始吧。
第 1 步 — 启用 .htaccess 文件
默认情况下, .htaccess 文件是禁用的。我们需要先更改 Apache 配置并启用 .htaccess 文件。
打开 apache2/sites-available/your_domain.conf 虚拟主机文件,使用 nano 或任何首选的文本编辑器:
|
1 |
$ sudo nano /etc/apache2/sites-available/your_domain.conf |
假设您已经准备好 Apache Web 服务器 指南中讨论的设置,您将找到以下配置详细信息:
|
1 2 3 4 5 6 7 8 |
<VirtualHost *:80> ServerAdmin webmaster@localhost ServerName your_domain ServerAlias www.your_domain DocumentRoot /var/www/your_domain ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> |
接下来,将以下 Directory 内容包含在 VirtualHost 块中:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<VirtualHost *:80> ServerAdmin webmaster@localhost ServerName your_domain ServerAlias www.your_domain DocumentRoot /var/www/your_domain ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined <Directory /var/www/your_domain> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow, deny allow from all </Directory> </VirtualHost> |
在上述代码块中, AllowOverride All 在 Directory 部分下是最重要的一项。该部分启用了 .htaccess 文件。
之后,保存您的工作并关闭文件。如果您使用的是 nano 文本编辑器,请使用快捷键 CTRL + X, Y,以及 ENTER 来关闭文件。
在重启 Web 服务器之前检查配置:
|
1 |
$ sudo apache2ctl configtest |
如果一切就绪,您将看到输出 Syntax OK。现在,重启服务器以添加您的密码策略:
|
1 |
$ sudo systemctl restart apache2 |
一旦启用了 .htaccess 文件设置,就该创建一个新文件了。
第 2 步 — 创建 .htaccess 文件
创建 .htaccess 文件非常简单。您必须导航到 Web 根目录(即源目录)以找到 .htaccess 文件,以确保配置更改正确执行。
|
注意:在定位 .htaccess 文件时要小心。配置中的细微错误可能会对其目录及后续目录产生不利影响。例如,如果您的目标是在同一台 Apache 服务器上运行多个网站,请将您的 .htaccess 文件放在与该网站映射的 Web 根目录中。 |
如果您遵循了上面讨论的前提条件,您将在 root 目录中找到它,路径为 /var/www/my_domain/.htaccess。接下来,使用以下命令为您的网站创建一个 .htaccess 文件:
|
1 |
$ sudo nano /var/www/your_domain/.htaccess |
一旦我们准备好了 .htaccess 文件,让我们来看看它的一些使用场景。
第 3 步 — .htaccess 文件的常见用途

在您的网站上使用 .htaccess 页面带来了一系列优势。让我们详细讨论每一个:
-
重定向 URL
URL 重定向(也称为 URL 转发)是一种 Web 服务器功能,用于将域名的访问者重定向到另一个 URL。您可以使用 .htaccess 来满足您的 URL 重定向需求。在您的 .htaccess 文件中添加以下内容,以将源 URL 映射到目标 URL:
|
1 2 3 4 |
RewriteEngine on RewriteCond %{HTTP_HOST} ^testdomain.com [NC,OR] RewriteCond %{HTTP_HOST} ^www.testdomain.com [NC] RewriteRule ^(.*)$ http://demodomain.com/$1 [L,R=301,NC] |
-
创建自定义错误页面
A useful facet of the .htaccess 文件的一个有用方面是创建自定义错误页面。通常,当用户遇到网站上不存在的页面时,屏幕上会弹出错误消息。一些常见的 HTTP 错误代码 包括:
-
400 Bad Request
-
401 Unauthorized
-
403 Forbidden
-
404 Not Found
-
500 Internal Server Error
-
502 Bad Gateway
-
503 Service Unavailable
与默认的服务器页面错误“Page Not Found”不同,利用 .htaccess 文件可以为您的用户提供更佳、更友好的浏览体验。
-
设置安全身份验证
使用 .htaccess 文件,您还可以设置安全身份验证。为此,您需要创建一个 .htpasswd 文件来对用户进行身份验证。
使用 htpasswd 命令创建一个用于安全目的的密码文件。Apache 将使用此密码文件来验证已授权的用户。导航到 /etc/apache2 目录并创建一个名为 .htpasswd.
要创建所需的 .htpasswd 文件,请使用 -c 选项(首次使用此密码安全实用程序时)。接下来,在命令末尾指定用户名,以便在文件中列出新条目。之后,替换用户名 nick(本教程中使用)为您的用户名:
|
1 |
$ sudo htpasswd -c /etc/apache2/.htpasswd nick |
接下来,您将被要求提供并验证用户的密码。
继续阅读本教程以了解更多关于在 Ubuntu 20.04 上使用 Apache 设置和配置密码身份验证的信息。
-
添加 MIME 类型
使用多用途互联网邮件扩展 (MIME) 类型可以毫不费力地对互联网上使用的文件进行分类。在网站无法交付特定文件的几种情况下,添加扩展名即可解决问题。使用以下代码将多用途互联网邮件扩展 (MIME) 类型添加到您的 Apache 服务器中的 .htaccess 文件:
|
1 |
AddType audio/mp4a-latm .m4a |
|
注意:在我们的指南中,我们使用了一个音频文件 MIME 类型。请将应用程序和文件扩展名替换为您目标 MIME 类型。此外,请确保虚拟主机配置和 .htaccess 文件的位置目录能够使用 AddType 指令。否则,您将收到 500 Internal Server Error。 |
-
服务器端嵌入 (SSI)
SSI 是向 HTML 页面提供动态内容的指令。它用于使用某些特定数据更新大量页面,而无需显式更新每个页面。
在 HTML 文件中,服务器端嵌入 SSI 默认是禁用的。将以下代码添加到您的 .htaccess 文件以启用 SSI:
|
1 2 |
AddType text/html .shtml AddHandler server-parsed .shtml</pre> |
上述行首先验证 .shtml 文件。然后将确认发送到 .htaccess 文件,同时允许服务器解析所有 .shtml 文件。
或者,您可以使用 XBitHack 来解析多个 .html 内容,而不是逐个重命名 .shtml 扩展名。将以下行添加到 .htaccess 文件以使用 XbitHAck 并请求 Apache 检查所有 .html 文件:
|
1 |
XBitHack on |
接下来,您需要更改权限以传递页面使用 XBitHack 的资格。使用以下 chmod 命令来执行此操作:
|
1 |
$ chmod +x pagename.html |
-
管理 IP 地址
有时,出于安全目的,您可能希望阻止某个 IP 或一系列 IP 地址访问您的网站。将以下代码行插入到您的 .htaccess 文件中以限制目标 IP:
|
1 |
Order Deny, Allow Deny from A.A.A.A (其中 A.A.A.A 是 一个 特定 IPv4 地址) |
使用单独的行来阻止多个 IP:
|
1 |
Order Deny Allow Deny from A.A.A.A (其中 A.A.A.A 是 一个 特定 IPv4 地址) Deny from B.B.B.B (其中 B.B.B.B 是 一个 特定 IPv4 地址) |
此外,您可以阻止域名访问您的网站。通过将以下代码行添加到 .htaccess 文件来限制特定域名:
Order Deny, Allow Deny from www.blockdomain.com(其中 www.blockdomain.com 是特定域名)
使用 .htaccess 的潜在问题
添加
.htaccess 文件无疑是配置网站并使其用户友好的明智之举。然而,在配置设置中进行的任何修改都会带来其他代价。让我们来看看一些令人信服的理由,说明为什么您不应该使用
.htaccess 文件:
i. 性能损失:每当服务器扫描页面目录及其 .htaccess 文件时,页面就会加载。因此,速度和性能损失成为首要关注的问题。
ii. 安全性:访问 .htaccess 文件可以完全控制服务器配置。这意味着任何获得 .htaccess 访问 .htaccess 文件,这反过来会导致潜在的 安全风险.
iii. 可访问性: .htaccess 文件必须极其小心地处理。如果 .htaccess 文件中存在任何错误,它可能会导致整个网站瘫痪。
结论
在本指南中,我们全面了解了如何启用、创建和使用 .htaccess 文件。我们讨论了何时以及在何处必须使用 .htaccess 文件。利用 .htaccess 文件来保护您的网站并防止其受到攻击。然而,使用此配置文件有几个不容忽视的陷阱。简而言之,请使用 .htaccess 文件,具体取决于您服务器’s 的使用情况和用户的访问需求。
此外,您还可以在 我们的 博客上找到其他网络教程:
评论
暂无评论。发表第一条评论吧。