密码当重写规则阻止其工作时,使用.htaccess保护目录

时间:2012-02-04 12:37:18

标签: .htaccess mod-rewrite passwords

所以我想密码保护我的目录/admin/,所以我在.htaccess文件夹中放了一个/admin/,其中包含了查找htpasswd文件的所有正确信息。

唯一的问题是,当我尝试导航到该目录中的文件时,它会加载并加载,并且从不提示我输入密码,最终只会超时。

我认为这是因为我的public_html .htaccess文件中有重写条件。它设置为每当有人前往mydomain.com/theirusername时,它都会重定向到mydomain.com/profile/user.php?username=theirusername

有没有办法覆盖这个,所以这个特定的目录会提示我输入密码?

以下是我的.htaccess文件中的当前代码:

RewriteEngine on 

RewriteCond %{HTTP_HOST} ^mydomain.com [NC] 
RewriteRule ^(.*)$ http://www.mydomain.com/$1 [R=301,L]


RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .+ profile/user.php?name=$0

这是/ admin文件夹中的.htaccess:

AuthUserFile "/home/passwords/passwd"
AuthName "Please Log In"
AuthType Basic
require valid-user 

1 个答案:

答案 0 :(得分:0)

您是对的:在public_html .htaccess文件中重写条件。

执行以下操作:

RewriteEngine on 

RewriteCond %{HTTP_HOST} ^mydomain.com [NC] 
RewriteRule ^(.*)$ http://www.mydomain.com/$1 [R=301,L]


RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !/admin/?
RewriteRule .+ profile/user.php?name=$1 [L]