【问题标题】:RewriteRule / HTTP auth for one url一个 url 的 RewriteRule / HTTP auth
【发布时间】:2014-01-29 16:54:46
【问题描述】:

我想将 "?p_id=62" 重定向到 http 身份验证,但它不起作用。

我的会议:

<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>

谁能帮忙?

【问题讨论】:

    标签: apache .htaccess http url-rewriting vhosts


    【解决方案1】:

    您不需要匹配查询字符串的? 部分:

    RewriteCond %{QUERY_STRING} !^p_id=62$
    RewriteRule ^ - [E=NO_AUTH:1,L]
    

    但是,这行不通。 mod_auth 模块在应用mod_rewrite 之前 被应用,因此当重写规则检查查询字符串以设置环境变量时,mod_auth 已经将请求标记为401(需要验证)。您可能不得不接受脚本解决方案,例如:

    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 处的内容并将其返回给浏览器(而不是重定向)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多