我想将“?p_id = 62”重定向到http authentification,但它不起作用。
我的conf:
<LocationMatch ^/>
RewriteCond %{QUERY_STRING} !^\?p_id=62$
RewriteRule ^ - [E=NO_AUTH:1,L]
Order deny,allow
Deny from all
AuthType basic
AuthName "Auth Needed"
AuthUserFile "/var/www/site/.htpasswd"
Require valid-user
Allow from env=NO_AUTH
Satisfy Any
</LocationMatch>
有人可以帮忙吗?
答案 0 :(得分:0)
您无需匹配查询字符串的?
部分:
RewriteCond %{QUERY_STRING} !^p_id=62$
RewriteRule ^ - [E=NO_AUTH:1,L]
但是,这不会起作用。在应用 mod_rewrite之前应用 mod_auth模块,因此当重写规则检查查询字符串以设置环境变量时,mod_auth已将请求标记为401(需要auth)。您可能不得不求助于脚本化解决方案,例如:
RewriteCond %{QUERY_STRING} !^\?p_id=62$
RewriteRule ^ /auth_script.php [L]
<Files "auth_script.php">
Order deny,allow
Deny from all
AuthType basic
AuthName "Auth Needed"
AuthUserFile "/var/www/site/.htpasswd"
Require valid-user
</Files>
并且auth_script.php
只会在$_SERVER['REQUEST_URI']
URI处加载内容并将其返回到浏览器(而不是重定向)。