Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
htaccessapachemod_重写&;身份验证:奇怪的行为_Apache_.htaccess_Mod Rewrite_Http Authentication - Fatal编程技术网

htaccessapachemod_重写&;身份验证:奇怪的行为

htaccessapachemod_重写&;身份验证:奇怪的行为,apache,.htaccess,mod-rewrite,http-authentication,Apache,.htaccess,Mod Rewrite,Http Authentication,我在我的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" AuthUser

我在我的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检查),但不需要身份验证

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


可以找到更多信息

在此规则之后,您还有其他重写规则吗?你试过把它作为最后一条规则吗?您是否也尝试过在另一个从未对任何URL进行过身份验证的浏览器中

require valid_user
应该是

require valid-user

你是对的。在我的服务器上,我已经
需要有效的用户
,但它仍然不起作用。我试图使用
[L]
语句使我的重写规则成为@Z99建议的最后一条规则,但没有任何改变。这是Apache错误吗?