使用.htaccess密码保护虚拟目录

4
我有一个网站,其虚拟目录结构为mysite.com/folder/title,实际上是.htaccess重写到mysite.com/f/index.php?p=title。我想用.htaccess对目录folder进行密码保护,并知道如何对实际目录进行此操作。但我不想对主站点mysite.com进行密码保护,而且现在如果我将.htaccess文件放在mysite.com目录中,我会保护mysite.commysite.com/folder。我还尝试了保护mysite.com/f
如何仅使用.htaccess保护mysite.com/folder
编辑:添加了mysite.com的.htaccess内容。
<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

你有更改主服务器配置的权限吗? - David Z
1
你尝试过将 .htaccess 文件移动到“f”文件夹中以进行保护吗? - 2ndkauboy
我没有访问主服务器配置的权限,我已经尝试将其移动到/f,但是它不起作用。 - jkeesh
这可能更适合在Server Fault上提问吗? - Walter Mundt
你解决了这个问题吗?我也遇到了完全相同的情况,尽管实际上没有可以放置.htaccess文件的文件夹。我猜想像我一样,你也在运行WordPress(htaccess中肯定有一个永久链接重写规则)。希望能得到解决方案。 - Tom Auger
显示剩余3条评论
3个回答

2

老帖子已经过时了...

在解决类似问题时偶然发现,需要保护子域名的密码,同时不影响主站。

解决方案比我最初想象的要简单。

在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会重定向并进行密码保护。

希望对其他人有所帮助。


0

假设您正在使用Apache 2.2

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

...那么,请创建:mysite.com/f/.htaccess,并添加您所需的规则。

关于何时使用此方法以及何时不使用,可以在这里找到详细讨论。


嗯...你尝试验证一下是否正在加载.htaccess文件了吗?一种检查的方法是在一个文本文件中放入一些无意义的内容,从包含虚假.htaccess文件的目录中加载页面,并检查您的服务器日志以验证是否抛出错误。如果这不会产生错误(文件未加载),那么可能是因为您的问题是AllowOveride被设置为“None”,更多信息请参见:httpd.apache.org/docs/current/mod/core.html#allowoverride - Perry Horwich

0
一个可行的方法(虽然不是最优雅的解决方案)是实际上创建一个名为“folder”(或您尝试密码保护的任何虚拟文件夹)的文件夹,并将.htaccess放入其中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接