htaccess apache mod_rewrite & authentication:奇怪的行为

Posted

技术标签:

【中文标题】htaccess apache mod_rewrite & authentication:奇怪的行为【英文标题】:htaccess apache mod_rewrite & authentication: strange behavior 【发布时间】:2011-07-02 22:47:07 【问题描述】:

我已经在我的 apache 服务器上创建了一个基于查询的身份验证,但是我从 apache 得到了一个奇怪的行为,并且找不到我的出路。这是 .htaccess 代码:

RewriteEngine on
RewriteCond %QUERY_STRING p=1
RewriteRule ^(.*)$ $1?map=$1 [E=authme:1]
Order deny,allow
Deny from env=authme
AuthType Basic 
AuthName "Login Required"
AuthUserFile /var/www/test/.htpasswd
require valid-user
Satisfy any

我希望 apache 查看 p=1 的查询字符串。如果找到,则设置环境变量(authme=1)。这很好用! 我希望如果查询字符串中存在 p=1,则需要进行身份验证(从 env=authme 拒绝)。 如果从浏览器调用主索引文件(在我的情况下为 index.php),所有这些东西都非常有效,但如果调用同一目录中的其他文件,根本不起作用。 环境变量设置正确(我可以用PHP检查),但不需要认证。

我真的不明白为什么。任何帮助将不胜感激!

更多信息可以找到here

【问题讨论】:

【参考方案1】:

在此之后您还有其他重写规则吗?您是否尝试过使其成为最后的 [L] 规则?您是否还尝试过使用从未在任何 url 上进行身份验证的第二个浏览器?

【讨论】:

【参考方案2】:
require valid_user

应该是

require valid-user

【讨论】:

你是对的。在我的服务器上,我有require valid-user,但它仍然无法正常工作。我尝试按照@Z99 的建议使用[L] 语句将我的重写规则设为最后一条规则,但没有任何改变。这是 Apache 的错误吗?

以上是关于htaccess apache mod_rewrite & authentication:奇怪的行为的主要内容,如果未能解决你的问题,请参考以下文章

apache开启.htaccess及.htaccess的使用方法

apache开启.htaccess及.htaccess的使用方法

允许htaccess文件apache [重复]

apache的.htaccess文件作用和相关配置

apache_conf Apache .htaccess

apache .htaccess 分布式配置文件 解读