1

我正在尝试使用除根路径之外的 AuthUserFile 限制对我的网站的访问。

SetEnvIf Request_URI "^/$" allow_access=true

Order Deny,Allow
Deny from all
Allow from env=allow_access

但是,当 robots.txt 之类的文件也受到保护时,我遇到了一个问题。

由于某种原因,以下指令不起作用

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_URI} ^/$
RewriteRule .* - [E=allow_access]

Order Deny,Allow
Deny from all
Allow from env=allow_access

除了主页 (/) 和物理上存在的文件(例如 robots.txt 和 favicon.ico)之外,还有什么方法可以限制对 /any/path/here/ 的访问?

提前感谢您的帮助!

4

2 回答 2

1

这可以使用IF 指令表达式优雅地完成

<If "-f %{REQUEST_FILENAME}">
  SetEnv allow_access
</If>

Order Deny,Allow
Deny from all
Allow from env=allow_access
于 2019-06-04T10:22:52.430 回答
0

这有点棘手,但这个组合mod_rewritemod_setenvif工作:

RewriteEngine on

# if file or directory doesn't exist then forward to /deny
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .+ /deny [L]

# set env variable deny_access if URI is /deny
SetEnvIf Request_URI "^/deny$" deny_access

# block access if env variable deny_access is set
Order Allow,Deny
Allow from all
Deny from env=deny_access
于 2014-07-22T17:39:17.213 回答