.htaccess
文件主要用于 Apache Web 服务器,可以在不更改服务器配置的情况下,允许对目录和子目录进行配置的工具。该文件以句点开头,表示它是一个隐藏文件。.htaccess
文件可用于加载自定义错误页面(例如 404 页面)、创建 URL 重定向、为服务器上的特定目录配置密码保护的身份验证等等。
本文我们将介绍如何启用、创建和使用.htaccess
文件,还包括该文件常见用途以及其对速度和安全性的影响。
第 1 步:Apache 如何启用 .htaccess 文件
默认情况下,. htaccess 文件并未启用。要启用 . htaccess 文件,需对 Apache 的配置文件进行修改。
尚未启用虚拟主机配置
如果 Apache 未启用虚拟主机,其使用的是默认的名为 000-default.conf
的配置文件。可以根据下面的步骤进行操作:
1. 在终端执行以下命令以对默认 Apache 配置文件进行编辑:
sudo nano /etc/apache2/sites-available/default
2. 在配置文件中找到标有 <Directory /var/www> 的部分,然后将AllowOverride None
条目更改为 AllowOverride All
:
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
更改后保存文件并退出。
3. 接下来,重启 Apache 服务:
sudo systemctl apache2 restart
已启用虚拟主机配置
如果服务器上创建了多个虚拟主机配置文件,可以使用编辑器打开目标网站的配置文件:
sudo nano /etc/apache2/sites-available/your_domain.conf
如果您对虚拟主机不是很了解,可以参考本站的其他文章。
1、如何在 Ubuntu 20.04 上配置 Apache 虚拟主机
2、如何在 CentOS 8 上安装 Apache 服务器和配置虚拟主机
默认情况下,网站的虚拟主机配置文件可能是这样的:
/etc/apache2/sites-available/your_domain.conf
<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>
要为 Apache 开启 .htaccess 文件,可以在VirtualHost
块中添加以下Directory
内容:
/etc/apache2/sites-available/your_domain.conf
<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>
在Directory
内容块中最重要的就是AllowOverride All
,通过它来启用.htaccess
文件。添加完成后,保存并关闭文件。如果您使用的是nano
,可以通过按CTRL + X
然后按Y
和ENTER
来保存。
接下来,执行下面的命令重新启动 Apache:
sudo systemctl apache2 restart
现在,就已经配置 Apache 允许使用.htaccess
文件。
第 2 步:创建 .htaccess 文件
与大多数 Linux 软件包一样,Apache 基于配置文件运行。而 .htaccess 文件就是其重要的配置文件之一。.htaccess
文件的位置一定要放对,因为该文件的配置会影响其目录及其子目录中的所有内容。
要创建并打开 .htaccess 文件进行编辑,请执行下面的命令:
sudo nano /var/www/yourdomain.com/.htaccess
记得将 yourdomain.com 替换为实际网站的名称。如果此文件不存在,文本编辑器将创建一个新的文件。
通过 .htaccess 文件限制目录访问权限
通过 .htaccess 文件,可以限制用户对目录的访问权限。
1. 首先,在不同的目录中创建一个新文件.htpasswd :
sudo nano /user/safe_location/.htpasswd
为要创建的每个用户输入用户名和密码。确保使用强密码,并且每行只输入一个用户名/密码对。然后保存文件并退出。
2. 接下来编辑 .htaccess 以启用身份验证:
AuthUserFile /user/safe_location/.htpasswd
AuthGroupFile /dev/null
AuthName "Please Enter Password"
AuthType Basic
Require valid-user
配置内容说明:
将 /user/safe_location/htpasswd 替换为您选择的实际位置。出于安全考虑,请勿将其存储在与网站相同的目录中。
AuthUserFile
– 设置您的 .htpasswd 文件的位置。
AuthGroupFile
– 我们没有使用组,所以这只是一个占位符。
AuthName
– 这是给用户的提示,可以根据需要改写。
AuthType
– 使用的身份验证类型,不要更改此设置。
Require valid-user
– 允许同时授权多个用户。您可以将其更改为 Require user user_name 以将访问权限仅限于用户名为 user-name 的人。
通过 .htaccess 文件管理 IP 地址
允许特定 IP 地址访问
要允许特定某个或多个 IP 地址访问,可以按照下面的方式配置。
order deny, allow
allow from 192.168.0.54
allow from 192.168.0
要阻止特定 IP 地址访问
要通过 .htaccess 文件阻止特定 IP 地址访问,请按照下面的方式操作。
order allow, deny
allow from 192.168.0.54
allow from 192.168.0
要阻止单个 IP 地址,只需使用以下代码:deny from 192.168.0.54
如果省略 IP 的最后一位,它将阻止 0 – 255 范围内的所有 IP 地址:
例如:deny from 192.168.0
完成文件更改后,可以重载 Apache 服务。
按流量来源阻止访问者
如果想要阻止从特定网站重定向到您网站的流量,然后在 .htaccess 文件中添加以下内容:
RewriteEngine on
# Options +FollowSymlinks
RewriteCond %{HTTP_REFERER} blockeddomain\.com [NC]
RewriteRule .* - [F]
这里的NC
表示忽略大写或小写,以便无法通过输入大写的方式绕过规则。
如果要屏蔽多个网站的流量,可以按照下面的方式:
RewriteEngine on
# Options +FollowSymlinks
RewriteCond %{HTTP_REFERER} blockeddomain\.com [NC,OR]
RewriteCond %{HTTP_REFERER} blockeddomain2\.com
RewriteRule .* - [F]
这里的OR
表示还要添加其他要屏蔽的网站流量,在最后一个网站条目后就不需要这个选项了。
重定向流量
可以使用 .htaccess 文件来重定向流量。打开文件并输入以下内容:
Redirect301/Other_Website.com/index.html/My_Website.com/index.html
此命令将访问 Other_Website.com 的所有流量重定向到 My_Website.com。
设置 404 页面
可以使用 . htaccess 文件将基本功能指向新位置。其中的一个应用就是设置自定义 404 页面。
1、打开 .htaccess 文件,输入:
ErrorDocument 404 /404.html
此行代码将告诉系统在网站的内容目录中查找 /404.html 文件作为 404 错误页面。
2. 使用以下命令创建 404 页面:
sudo nano cd /var/www/My_Website.com/public.html/404.html
这会在文本编辑器中打开 404.html 文件。
3.接下来,添加以下代码:
<!doctype html>
<html>
<body>
404 Error: Page not found
</body>
</html>
可以自定义此错误页面的内容。
作者:牛奇网,本站文章均为辛苦原创,在此严正声明,本站内容严禁采集转载,面斥不雅请好自为之,本文网址:https://www.niuqi360.com/webmaster/how-to-enable-and-set-up-htaccess-file-on-apache/