符号链接绕过 apache 中的 htaccess

符号链接绕过 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

现在进行测试:

http://localhost/private/service1<-- 要求输入密码,就像我想要的那样。

http://localhost/service1<--不需要输入密码!

这是符号链接的一般限制还是配置错误问题?在 Fedora 和 Ubuntu 上尝试了相当标准的配置(我可以根据要求发布它们)。

答案1

您可能仅为目标目录启用了 htaccess。您还应该对符号链接本身执行相同的操作:

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

在路径中找到符号链接后,apache 不会处理为目标目录定义的指令。无论如何,我会在 apache 配置中使用别名而不是符号链接。为了缩短 url。

答案2

简短的回答:使用 apache2 配置而不是文件 .htaccess 并保护原始目录而不是符号链接(或者可能有一种方法可以告诉“目录”取消引用符号链接)

详细回答:我在使用 phpmyadmin 时也遇到过类似的问题。以下Debian 指南我在文档根目录中创建了一个符号链接:

/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 中

这不起作用。最后我发现要保护的路径不是符号链接,而是实际的目录:

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

这个有效。

相关内容