.htaccess 被忽略,而 apache.config 表示已激活

.htaccess 被忽略,而 apache.config 表示已激活

编辑以澄清,因为到目前为止,所有答案/评论都在谈论与主题无关的事情

我验证了我的 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 真正读取符号链接文件,这些文件必须是可访问的;在大多数情况下,这意味着目录和文件必须是全世界可读的,目录必须是全世界可执行的。

相关内容