使用 Htaccess 阻止 URL 及其子 URL

使用 Htaccess 阻止 URL 及其子 URL

我有一个 URL http://example.com/web/en/press-release/。如何阻止所有用户访问和查看该页面以及http://localhost:10004/web/en/press-release/*使用.htaccess

我希望它们只能从特定的 IP 访问。

我确实喜欢这个,但没有效果。

# Press Release Blocked Now
RewriteCond %{HTTP_REFERER} web/en/press-release/ [NC,OR]
RewriteRule .* - [F]

答案1

如果你必须使用.htaccess文件你应该知道它们的局限性:

.htaccess文件(或“分布式配置文件”)提供了一种基于每个目录进行配置更改的方法。包含一个或多个配置指令的文件放置在特定的文档目录中,并且这些指令适用于该目录及其所有子目录。

这意味着您可以控制文件系统容器而不是网络空间容器,并且该配置默认适用于所有子目录。因此,为了实现您的目标,您必须将文件放置.htaccess到与 URL 路径对应的文件系统路径中/web/en/press-release/

如果/web/en/press-release/两者上的localhost:10004example.com都指向同一个目录,并且两者都使用 Apache 直接从文件系统提供服务(即它不是反向代理),文件系统上下文是一个不错的选择。从配置部分:何时使用什么

在文件系统容器和网络空间容器之间进行选择其实相当容易。当将指令应用于驻留在文件系统中的对象时,请始终使用<Directory><Files>。当将指令应用于不驻留在文件系统中的对象(例如从数据库生成的网页)时,请使用<Location>

尝试限制对文件系统中对象的访问时,切勿使用此选项<Location>。这是因为许多不同的网络空间位置 (URL) 可能映射到同一文件系统位置,从而允许规避您的限制。

代替使用 mod_rewrite 控制访问,Apache 有直接访问控制指令。使用它们更直接,并使您的配置更易于阅读和管理。Require指示mod_authz_coreip

Require ip 192.0.2.100
Require ip 198.51.100.0/24
Require ip 2001:DB8:C0F:FEE::/64

相关内容