编辑以澄清,因为到目前为止,所有答案/评论都在谈论与主题无关的事情
我验证了我的 apache.conf(Ubuntu)是否表示它会查找.htaccess
并允许.htaccess
覆盖所有内容:
#...
AccessFileName .htaccess
#...
<Directory /var/www>
AllowOverride All
Options FollowSymlinks
</Directory>
然后我将以下内容.htaccess
(权限为 755)放入我的/var/www
:
order allow, deny
deny from all
然后我重新启动了服务器,以root
确保配置再次加载并且没有文件访问权限会损害我的实验:sudo apache2ctl restart
结果是他仍然打开文件夹,就像没有一样.htaccess
。 可能出了什么问题? 我还可以检查什么以确保它正常工作?
编辑:我还检查了写入垃圾是否会产生错误消息,但不会!
答案1
<Directory />
AllowOverride All
</Directory>
您不应该这样做;这会引用文件系统根目录。
相反,只从您的 documentroot 向下定义允许的 AllowOverrides。
(并且,也可以在您的 UserDirs 中定义)
服务器寻找 /var/www/ 作为其网络目录,我在里面链接到我的主目录中的另一个文件夹
为了允许符号链接,必须为源目录设置 FollowSymLinks(在您的情况下为 /var/www)
不要使用这些不安全的设置,请使用以下命令:
<Directory />
AllowOverride None
Order allow,deny
Deny From All
</Directory>
<Directory /var/www>
AllowOverride All
Options FollowSymlinks
</Directory>
请注意,为了让 apache 真正读取符号链接文件,这些文件必须是可访问的;在大多数情况下,这意味着目录和文件必须是全世界可读的,目录必须是全世界可执行的。