为什么这个.htaccess代码不起作用?

时间:2013-12-18 13:49:54

标签: apache .htaccess

使用此代码并在不更改的情况下使用它

<FilesMatch "^(?!log_request\.php).*$">
  AuthUserFile /protect/.htpasswd
  AuthName "Tester's test test"
  AuthType Basic
  Require valid-user
</FilesMatch>

ErrorDocument 401 /log_request.php

我不知道FilesMatch“^(?!log_request.php)。* $”行的功能是什么,但文件应该匹配。当我尝试查看.htpasswd文件时,我收到内部服务器错误。

2 个答案:

答案 0 :(得分:0)

试试这段代码:

<FilesMatch "^(?!.*?log_request\.php).*$">
  AuthUserFile /protect/.htpasswd
  AuthName "Tester's test test"
  AuthType Basic
  Require valid-user
</FilesMatch>

ErrorDocument 401 /log_request.php

(?!...)是一个负面预测,可确保将基本身份验证代码应用于除log_request.php之外的所有文件

选项2使用SetEnvIfNoCase

SetEnvIfNoCase Request_URI "^/(?!log_request\.php).*" HANDLE401

AuthUserFile /protect/.htpasswd
AuthName "Tester's test test"
AuthType Basic
Require valid-user
Satisfy    any
Order      allow,deny
Allow from  all
Deny from env=HANDLE401

答案 1 :(得分:0)

您可以使用ErrorDocument 401 /log_request.php将所有这些请求发送到某些PHP脚本。 有关详细信息,请参阅本教程:http://www.askapache.com/htaccess/htaccess-htpasswd-basic-auth.html