0

我只需要根据 URL 参数触发 apache 身份验证。例如,以下 URL http://mySillyApplication.com/items/browse?collection=9&sort_field=Title&num_items=10& ...我需要仅在 collection=9 时触发身份验证。我已经尝试了很多东西,但我找不到如何去做。我认为关键是找到一个可以激活 LocationMatch 的 RewriteRule .... 只是一个猜测:

    RewriteEngine On
    RewriteCond %{QUERY_STRING} (.*(?:^|&))collection=9((?:&|$).*) [NC]
    RewriteRule (.*) - [R=401]
   <LocationMatch "....don't know...">
           AuthType Basic
           AuthName "Login Required"
           AuthUserFile /var/www/.../.htpwd
           Require valid-user
           Order allow,deny
           Allow from all
           Satisfy any
   </LocationMatch>

谢谢。

4

1 回答 1

0

<If> Directive如果 Apache 是 2.4.26 及更高版本,您可以使用http://httpd.apache.org/docs/2.4/mod/core.html#if

所以,试试下面的代码:

<If "%{QUERY_STRING} =~ /(collection=9&)/">

       AuthType Basic
       AuthName "Login Required"
       AuthUserFile /path/to/.htpasswd
       Require valid-user
       Order allow,deny
       Deny from all
       Satisfy any
</If>
于 2018-03-15T22:41:00.853 回答