符号链接绕过Apache中的htaccess

我的服务器中有一个受保护的文件夹。

/var/www/private/ /var/www/private/.htaccess 

它也有很多不同的服务子文件夹。

 /var/www/private/service1/ /var/www/private/service2/ /var/www/private/service3/ 

现在,我想缩短一些服务的url。 我想使用符号链接

 /var/www/service1 -> private/service1 

现在的testing:

http:// localhost / private / service1 < – 要求密码,就像我想要的。

http:// localhost / service1 < – 不要求input密码!

这是符号链接的一般限制还是错误configuration问题? 尝试在Fedora和Ubuntu与相当标准的configuration(我可以张贴在请求)。

您可能只为目标目录启用了htaccess。 你也应该为符号链接本身做同样的事情:

 <directory /var/www/symlink> allowoverride all </directory> 

在path中find符号链接后,apache不处理为目标目录定义的指令。 无论如何,我会在apacheconfiguration中使用别名而不是symlinking。 缩短url,也就是说。

简短的回答:使用apache2configuration,而不是文件.htaccess,并保护原来的目录,而不是符号链接(或者也许有办法告诉“目录”取消引用符号链接)

长答案:我有一个类似的问题,phpmyadmin。 遵循Debian指南,我在文档根目录中创build了一个符号链接:

 /var/www/html/phpmyadmin --> /usr/share/phpmyadmin 

然后我把这个指令

 <Directory "/var/www/html/phpmyadmin"> AuthType Basic AuthName "Restricted Content" AuthUserFile /etc/apache2/.htpasswd Require valid-user </Directory> 

而在/etc/apache2/sites-available/000-default.conf中

它不起作用。 最终我发现要保护的path不是符号链接,而是实际的目录:

 <Directory "/usr/share/phpmyadmin"> AuthType Basic AuthName "Restricted Content" AuthUserFile /etc/apache2/.htpasswd Require valid-user </Directory> 

这一个工作。