介绍一个.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
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块中添加以下目录内容块:
1[label /etc/apache2/sites-available/your_domain.conf]
2
3
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
12 Options Indexes FollowSymLinks MultiViews
13 AllowOverride All
14 Order allow,deny
15 allow from all
16
17
这个目录内容块中最重要的行是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
這些行告訴「.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 密码身份验证 。