How to Allow/Deny Website Access Using .htaccess

网站安全对于网站所有者和开发者来说是非常重要的,使用 .htaccess 配置文件保护你的网站是最好方法之一。Apache web 服务器使用此类文件,允许您为网站设置多种访问规则。

在本指南中,我们将介绍使用 .htaccess 限制访问网站的不同方法。

1. 什么是 .htaccess?

.htaccess (hypertext access) 是 Apache web 服务器用来管理特定目录设置的配置文件。这些设置可以包括访问控制和 URL 重定向,通过在网站的根目录中放置一个 .htaccess 文件,您可以将规则应用于整个网站或特定目录。

2. 限制 IP 地址访问

要根据 IP 地址限制对网站的访问,请遵循以下步骤:

(1) 在所需目录中创建或编辑现有的 .htaccess 文件

(2) 添加以下代码,将your_ip_address 替换为您想要授予访问权限的 ip 地址

Order Deny,Allow
Deny from all
Allow from your_ip_address

(3) 保存 .htaccess 文件并将其上传到服务器,这些更改应该立即生效。

3. 密码保护目录

要对特定目录进行密码保护,请遵循以下步骤:

(1) 在网站根目录之外的安全位置创建一个名为 .htpasswd 的新文件。

(2) 使用在线工具 online tool 或者 htpasswd 命令生成一个用户名/密码串,并且添加到 .htpasswd 文件中。

(3) 在所需的目录中,创建或编辑现有的 .htaccess 文件,并添加以下代码:

AuthType Basic
AuthName "Restricted Area"
AuthUserFile /path/to/your/.htpasswd
Require valid-user

(4) 把 /path/to/your/.htpasswd 替换为 .htpasswd 文件的实际路径。

(5) 保存 .htaccess 文件并将其上传到服务器,这些更改应该立即生效。

4. 阻止特定文件和文件类型的访问

要阻止对特定文件或文件类型的访问,请将以下代码添加到 .htaccess 文件中,并根据需要调整。

<FilesMatch "\.(file_extension1|file_extension2)$">
    Order Deny,Allow
    Deny from all
</FilesMatch>>

5. 限制特定 User Agent 访问

要限制基于 User Agent (例如特定的浏览器或机器人) 的访问,请将以下代码添加到 .htaccess 文件中。

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} user_agent_string [NC]
RewriteRule .* - [F]

user_agent_string 替换为你想限制的类型。

6. 组合多种访问限制

您可以在一个 .htaccess 文件中组合不同的访问限制,以创建更复杂的规则。

Order Deny,Allow
Deny from all
Allow from your_ip_address

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} user_agent_string [NC]
RewriteRule .* - [F]

7. 拒绝来自特定域的访问

要拒绝来自特定域名的访问者访问您的网站,请添加以下代码:

RewriteEngine On
RewriteCond %{HTTP_REFERER} blocked_domain\.com [NC]
RewriteRule .* - [F]

blocked_domain.com 替换为您想要阻止的实际域名。

此配置将检查 HTTP_REFERER 报头,如果与被阻止的域匹配,则拒绝访问。

注意: HTTP_REFERER 标头很容易被欺骗,然而它仍然可以用于阻止来自特定域的不必要的流量。

8. 拒绝在特定时间内访问

要在特定时间内拒绝访问,您可以使用 mod_rewrite 模块与 TIME_HOUR 变量。

(1) 在所需的目录中,创建或编辑现有的 .htaccess 文件。

(2) 添加以下代码,将 start_hourend_hour 替换为您想要阻止访问的时间。

RewriteEngine On
RewriteCond %{TIME_HOUR} >=start_hour
RewriteCond %{TIME_HOUR} <=end_hour
RewriteRule .* - [F]

(3) 例如,如果您想要在凌晨 2 点到凌晨 4 点之间阻止访问。

RewriteEngine On
RewriteCond %{TIME_HOUR} >=02
RewriteCond %{TIME_HOUR} <=04
RewriteRule .* - [F]

注意: 此方法依赖于服务器的时区,该时区可能与您的本地时间不同。

我的开源项目

酷瓜云课堂-在线教育解决方案


鸠摩智首席音效师
472 声望9 粉丝

身强体健,龙精虎猛的活着。