我的服务器中有一个受保护的文件夹。
/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>
这个有效。