我在媒体上传文件夹中使用这个简单的 .htaccess 文件,以便客户查看已上传的内容。
Options +Indexes
IndexOptions +FancyIndexing
是否可以添加指令以限制仅对少数 IP 进行访问?通常我们并不太担心这些 IP 的安全性,这就是为什么我们不使用用户/密码设置来保护它们。但是,一点点安全性不会有什么坏处 :)
附加问题...(这里真的暴露了我缺乏 Apache 配置知识):是否可以设置 if..else 类型,以便如果访问者没有可识别的 IP,他们就会被重定向到特定页面。
干杯!Ben
答案1
如果你想通过 IP 进行限制,只需添加
<Directory /path/to/the/folder>
Options +Indexes
IndexOptions +FancyIndexing
Order deny,allow
Deny from all
Allow from X.X.X.X
</Directory>
如果 IP 地址有规律,您也可以简化规则。例如,如果您想允许以 192 开头的 IP。
然后
Allow from 192
将允许所有以 192 开头的 IP。
附加问题:您不仅想阻止来自外部网络的页面加载,还想将它们发送到不同的页面,apache 的 mod_rewrite 模块可以提供帮助。假设您的本地网络是 192.168.1.0/24:
RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^192\.168\.1
RewriteCond !^/page_to_redirect
RewriteRule .* /page_to_redirect [R,L]
玩一玩。
答案2
因为这是 Goggle 索引中第一个“apache 目录仅允许 ip”的列表,也适用于那些想要限制 IP 访问的人。如果您使用的是 Apache 2.3 或更高版本,则应该使用要求指示。
摘自 Apache 文档:
Require all granted
Access is allowed unconditionally.
Require all denied
Access is denied unconditionally.
Require env env-var [env-var] ...
Access is allowed only if one of the given environment variables is set.
Require method http-method [http-method] ...
Access is allowed only for the given HTTP methods.
Require expr expression
Access is allowed if expression evaluates to true.
Some of the allowed syntaxes provided by mod_authz_user, mod_authz_host, and mod_authz_groupfile are:
Require user userid [userid] ...
Only the named users can access the resource.
Require group group-name [group-name] ...
Only users in the named groups can access the resource.
Require valid-user
All valid users can access the resource.
Require ip 10 172.20 192.168.2
Clients in the specified IP address ranges can access the resource.
需要指令文档链接:https://httpd.apache.org/docs/2.4/mod/mod_authz_core.html#require
另请参见此处:https://httpd.apache.org/docs/2.4/howto/access.html
有关索引选项,另请参阅:https://httpd.apache.org/docs/2.4/mod/mod_autoindex.html