仅在特定 URI 上激活 htaccess

仅在特定 URI 上激活 htaccess

我有一个在 ubuntu 系统上运行的 apache web 服务器。为了避免未经授权的用户访问,我有一个活动的.htaccess

AuthType Basic
AuthName "own area"
AuthUserFile /path/to/.htpasswd
require user username

.htacces 通过访问文档根目录中的所有文件(如),这种方法可以正常工作index.php。在这种情况下,需要进行用户身份验证。但现在我正在寻找一种方法来禁用此用户身份验证,如果调用了特定的 uri,例如:index.php?s=abc在这种情况下,并且只有在这种情况下,应用程序才应该无需身份验证即可使用。

有办法实现这一点吗?我不确定如何在网上搜索这个特定问题?

这是RewriteEngine钥匙吗?

服务器虚拟主机配置具有以下配置的活动重写规则:

  RewriteEngine on
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI}  !^/index.php
  RewriteRule ^/([\w]+)$ /index.php?s=$1   [L]

谢谢。

答案1

除了身份验证配置之外,还需将以下内容添加到 .htaccess 中:

# Set environment variable "allow" only for URL /index.php?s=abc
RewriteEngine on
RewriteBase /
RewriteCond %{QUERY_STRING} ^s=abc$
RewriteRule ^index.php$ - [E=allow]

# Allow access when allow is set
Order deny,allow
Deny from all
Allow from env=allow

# Grant access by Allow OR user authentication
Satisfy any

相关内容