3

我有一个具有虚拟目录结构的站点,mysite.com/folder/title实际上是 .htaccess 重写到mysite.com/f/index.php?p=title. 我想folder用 .htaccess 对文件夹进行密码保护,并且知道如何使用实际文件夹来做到这一点。但我不想用密码保护主站点mysite.com,现在如果我将 .htaccess 文件放在mysite.com目录中,我正在保护mysite.commysite.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这成功地保护了整个站点mysite.com,因此我知道路径是正确的。当它在子目录中时,它会生成 404 错误而不是密码提示。

AuthName "Restricted Area" 
AuthType Basic 
AuthUserFile /home/myusername/.htpasswd 
require valid-user
4

3 回答 3

1

旧线程是旧的...

在遇到类似问题时偶然发现了这一点,密码保护子域同时保持主站点没有。

解决方案比我最初想象的要容易。

在 document_root/.htaccess 中,domain.com/wiki 被重定向到 domain.com/w(因为这样更干净?哈哈):

RewriteEngine On
RewriteRule ^/?w(/.*)?$ /wiki/index.php [PT,L,QSA]
RewriteRule ^/*$ /wiki/index.php [L,QSA]

在 document_root/wiki/.htaccess 中,wiki 目录受密码保护:

AuthType Basic
AuthName "Restricted"
AuthUserFile "/home/user/.htpasswds/public_html/wiki/passwd"
require valid-user

我只是将这一行添加到 document_root/.htaccess 的顶部,因此它显示为:

AuthType None
RewriteEngine On
RewriteRule ^/?w(/.*)?$ /wiki/index.php [PT,L,QSA]
RewriteRule ^/*$ /wiki/index.php [L,QSA]

domain.com 不再受密码保护,并且 domain.com/wiki 会按预期重定向并使用密码保护。

希望它可以帮助别人。

于 2012-03-14T14:59:37.977 回答
0

有效的一件事(但不是最优雅的解决方案)是实际创建一个名为“文件夹”的文件夹(或您尝试使用密码保护的任何虚拟文件夹)并将 .htaccess 放入其中。

于 2010-10-18T20:53:49.823 回答
0

假设您使用的是 Apache 2.2

...并且,您的服务器正在运行在您无权修改服务器配置的机器上

...然后,使用您想要的规则创建:mysite.com/f/.htaccess。

在这里可以找到关于何时使用和何时不使用的很好的讨论。

于 2011-07-04T23:00:34.620 回答