如何使用 .htaccess 文件

介绍

一个.htaccess 文件用于一个 Apache 网页服务器,以便在不改变服务器配置文件的情况下配置您的网站的详细信息. 这个文件始于一个期限,表示它隐藏在文件夹中。

在本教程中,您将学习如何启用、创建和使用.htaccess 文件,以及一些常见的用途以及对速度和安全的影响。

前提条件

如果你想练习使用.htaccess 文件,按照本教程中的示例,你需要:

一旦完成设置,您可以在下一步练习启用和创建一个.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然后按YENTER

然后重新启动 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 密码身份验证

Published At
Categories with 技术
Tagged with
comments powered by Disqus