我有一个网站,其虚拟目录结构类似于mysite.com/folder/title
,实际上是 .htaccess 重写为mysite.com/f/index.php?p=title
。我想用folder
.htaccess 密码保护文件夹,并且知道如何对实际文件夹进行保护。但我不想用密码保护主网站mysite.com
,现在如果我将 .htaccess 文件放在mysite.com
目录中,我就会保护mysite.com
和mysite.com/folder
。我也尝试过保护mysite.com/f
。
我如何才能仅mysite.com/folder
使用 .htaccess 进行保护?
.htaccess 的内容mysite.com
。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^folder/(.*)$ /f/index.php?p=$1 [PT,L,QSA]
RewriteRule ^folder/*$ /f/index.php [L,QSA]
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
我尝试过的 .htaccess 文件mysite.com/f
在移入其他 .htaccess 文件时成功保护了整个站点,所以我知道路径是正确的。
AuthName "Restricted Area"
AuthType Basic
AuthUserFile /home/myusername/.htpasswd
答案1
首先,您不应该将该配置(重写规则)放在 .htaccess 文件中,而应该将其放在目录部分下的主配置文件中(假设您有权访问该文件)。Apache 文档解释了原因。
您应该检查是否具有正确的 AllowOverride 设置。如果所有设置都正确,则将您指定的 .htaccess 文件放在 mysite/f 文件夹中应该足以对其进行密码保护。