介绍
一个.htaccess 文件用于一个 Apache 网页服务器,以便在不改变服务器配置文件的情况下配置您的网站的详细信息. 这个文件始于一个期限,表示它隐藏在文件夹中。
在本教程中,您将学习如何启用、创建和使用.htaccess 文件,以及一些常见的用途以及对速度和安全的影响。
前提条件
如果你想练习使用.htaccess 文件,按照本教程中的示例,你需要:
- 设置一个Ubuntu 20.04服务器,配备一个非root用户,并启用`sudo'权限和防火墙。 您可以遵循 [Ubuntu 20.04 初始服务器设置指南] (https://andsky.com/tech/tutorials/initial-server-setup-with-ubuntu-20-04)来做到这一点。
- 在您的 Ubuntu 服务器上安装的 Apache 网络服务器 。 学习如何在 [如何在 Ubuntu 20.04 上安装 Apache Web 服务器] (https://andsky.com/tech/tutorials/how-to-install-the-apache-web-server-on-ubuntu-20-04 ) 上设置它 。 请确定完成 ** 第 5 段 ** , 并为您域设置 [虚拟主机文件] (https://andsky.com/tech/tutorials/how-to-install-the-apache-web-server-on-ubuntu-20-04#step-5-setting-up-virtual-hosts-recommended ) 。 此教程会将 ** 您的域** 作为整个示例, 并在虚拟主机文件中使用 `/etc/apaches2/ sites- 可用/ your_ domain.conf' 。
- 如果您想要使用一个域名( 可选) 来练习, 您可以在 [Namecheap] (https://namecheap.com/ 上购买一个域名来设置一个域名, 在 [Freenom] (http://www.freenom.com/en/index.html) 上免费获得一个域名, 或者使用您选择的域名注册员 。 您还需要为您的服务器设置的下列DNS记录:两个A级记录,一个是
您的域名
,一个是www.your_domain
指向您的服务器的公共IP地址。 遵循此[引入到 DigitalOcean DNS] (https://andsky.com/tech/tutorials/an-introduction-to-digitalocean-dns),详细了解如何添加. - 如果您也想要保护您的虚拟主机, 您可以使用免费的可信任的证书来保护, 如我们的 [让我们为 Apache 加密指南] (https://andsky.com/tech/tutorials/how-to-secure-apache-with-let-s-encrypt-on-ubuntu-20-04) 。 然而,如果没有域,则可以使用自签名的证书取而代之. 这提供了同类型的加密,但没有域验证. 遵循我们[自签名的 Apache (https://andsky.com/tech/tutorials/how-to-create-a-self-signed-ssl-certificate-for-apache-in-ubuntu-20-04) SSL 指南来设置此功能 。 (英语)
一旦完成设置,您可以在下一步练习启用和创建一个.htaccess
文件。
启用.htaccess 文件
如果您可以访问服务器设置,您可以编辑 Apache 配置以允许.htaccess 文件取代标准网站配置。
開始開啟「apache2/sites-available/your_domain.conf」虛擬主機檔案,使用您喜愛的文本編輯器。
1sudo nano /etc/apache2/sites-available/your_domain.conf
假设您遵循 前提 Apache 安装指南的第 5 步,此文件将包含以下内容:
1[label /etc/apache2/sites-available/your_domain.conf]
2
3<VirtualHost *:80>
4 ServerAdmin webmaster@localhost
5 ServerName your_domain
6 ServerAlias www.your_domain
7 DocumentRoot /var/www/your_domain
8 ErrorLog ${APACHE_LOG_DIR}/error.log
9 CustomLog ${APACHE_LOG_DIR}/access.log combined
10</VirtualHost>
在VirtualHost
块中添加以下目录
内容块:
1[label /etc/apache2/sites-available/your_domain.conf]
2
3<VirtualHost *:80>
4 ServerAdmin webmaster@localhost
5 ServerName your_domain
6 ServerAlias www.your_domain
7 DocumentRoot /var/www/your_domain
8 ErrorLog ${APACHE_LOG_DIR}/error.log
9 CustomLog ${APACHE_LOG_DIR}/access.log combined
10
11<Directory /var/www/your_domain>
12 Options Indexes FollowSymLinks MultiViews
13 AllowOverride All
14 Order allow,deny
15 allow from all
16</Directory>
17</VirtualHost>
这个目录
内容块中最重要的行是AllowOverride All
,它允许使用.htaccess
文件. 添加这些信息后,保存并关闭文件. 如果您使用nano
,您可以按CTRL + X
然后按Y
和ENTER
。
然后重新启动 Apache:
1sudo service apache2 restart
现在您的配置设置已更新以允许使用 .htaccess
文件,在下一步,您将创建一个。
创建.htaccess 文件
要在您的终端创建一个 .htaccess
文件,您需要导航到您的 Web 根目录. 您的 Web 根目录是将 .htaccess
文件放置在那里,以便您的配置可以正确地执行您的网站。 .htaccess
文件的正确放置很重要,因为该文件中的配置会影响其目录中的所有内容,以及其后面的目录。 这意味着如果您在同一个 Apache 服务器上服务几个不同的网站,则您的 .htaccess
文件应该放置在特定网站的 Web 根目录中。
如果您遵循前提条件,您的 Web 根目录将位于以下位置: /var/www/your_domain/.htaccess
. 为您的网站创建一个 .htaccess
文件,请执行以下命令:
1sudo nano /var/www/your_domain/.htaccess
现在你已经学会了创建一个.htaccess
文件的几种方法,接下来我们将审查一些常见的.htaccess
页面的用途。
一个.htaccess
页面的常见用途
您的网站上有五种常见的.htaccess
页面用途:
重写 / 重写
htaccess
文件最有用的方面之一是mod_rewrite
。您可以使用.htaccess
文件来指定和更改网站上的URL和网页如何向用户显示。
身份验证
要设置安全身份验证,您可以创建一个名为.htpasswd
的密码文件来验证用户。 进行此更改将创建一个密码门户,要求网站访问者输入密码,如果他们想要访问网页的某些部分。
要创建该文件,请运行htpasswd
命令,并包括-c
选项和用户名,以创建指定的htpasswd
文件。一旦发生这种情况,提示会要求您提供密码。您可以将所需的数行插入htpasswd
文件,但请确保每个用户都有自己的相应行。下面的示例说明了如何在文件中创建一个新的条目,在这种情况下对于用户 sammy:
1sudo htpasswd -c /etc/apache2/.htpasswd sammy
您可以通过运行cat /etc/apache2/.htpasswd
来检查此文件的内容,它将为您添加的每个记录输出用户名和加密密码。
一旦你添加了你想要的用户(s),接下来打开.htaccess 文件. 如果你遵循前提指南,这将位于以下位置:
1sudo nano /var/www/your_domain/.htaccess
请记住,在本示例中,我们将基于 /var/www/your_domain
限制整个文档根,但可以将其放置到您想要限制访问的任何目录中。
打开此文件后,添加以下内容并保存更改以开始使用密码函数:
1[label /var/www/your_domain/.htaccess]
2AuthType Basic
3AuthName "Restricted Content"
4AuthUserFile /etc/apache2/.htpasswd
5Require valid-user
要了解更多信息,请阅读我们的教程 如何使用 Apache 设置密码身份验证。
用户错误页面
.htaccess 文件还允许您为您的网站创建自定义错误页面,其中一些最常见的错误是:
- 400 错误请求
- 401 权限要求
- 403 禁止页面
- 404 文件未找到
- 500 内部错误
要使页面易于使用,并为网站访问者提供比默认服务器错误页面提供的更多信息,您可以使用 .htaccess
文件创建自定义错误页面。
MIME 类型
如果您的网站包含某些应用程序文件,而您的服务器尚未设置为交付,您可以在.htaccess 文件中使用以下代码将多用途互联网邮件扩展(MIME)类型添加到您的 Apache 服务器:
1[label /var/www/your_domain/.htaccess]
2AddType audio/mp4a-latm .m4a
请务必用您想要支持的 MIME 类型替换应用程序和文件扩展,为此示例,我们指定了音频 MIME 文件类型。
SSI 的
服务器侧包括(SSI)是一个伟大的时间节省在一个网站上。SSI的最常见用途之一是更新大量的页面与一些特定的数据,而无需更新每个页面单独。
要启用 SSI,请将以下代码插入到您的.htaccess 文件中:
1[label /var/www/your_domain/.htaccess]
2AddType text/html .shtml
3AddHandler server-parsed .shtml</pre>
這些行告訴「.htaccess」「.shtml」檔案是有效的,而第二行特別讓伺服器對任何SSI命令檢查以「.shtml」結束的所有檔案。
但是,如果您有许多.html
页面,您不愿意用.shtml
扩展更名,您可以使用另一种策略来对它们进行 SSI 命令的解析,即XBitHack
。
您可以使用此XBitHack
策略,将下列行添加到.htaccess
文件中,以便Apache检查所有具有适当的SSI权限的.html
文件:
1[label /var/www/your_domain/.htaccess]
2XBitHack on
要使页面符合XBitHack
的条件,请使用chmod
命令更改权限:
1chmod +x pagename.html
现在你已经了解了.htaccess 页面的一些常见用途,接下来你将了解有关.htaccess 文件对速度和安全性的影响。
使用.htaccess 文件的速度和安全性
虽然一个.htaccess 文件可以用来改进一个网站,但有两件事要注意:速度和安全性。
至于速度,.htaccess 文件可能会减慢您的服务器,但对于大多数服务器来说,这可能是一个不可察觉的变化。这可能是由于页面的位置,因为.htaccess 文件会影响其目录中的页面和其后所有的目录,这意味着每次页面加载时,服务器会扫描其目录,以及之前的任何目录,直到它达到最高的目录或.htaccess 文件。
为了安全,.htaccess 文件比标准的 Apache 配置更容易访问,更改是即时进行的(无需重新启动服务器)。这允许用户对.htaccess 文件进行更改,让他们对服务器本身有很大的控制权。任何在.htaccess 文件中放置的指令,都具有与在 Apache 配置本身相同的效果。
结论
.htaccess 文件为您提供了大量的灵活性来构建您的网站. 要了解更多关于安全您的网站,请阅读我们的教程在 设置与 Apache 密码身份验证 。