Apache 别名在 .htaccess 中不工作

Apache Alias not working in .htaccess

我在 Ubuntu 16 上安装了 Apache 2.4,一切正常。

我在本地主机上有一个网站,这也能正常工作。

我需要能够访问 USB 驱动器上的文件才能在网站内使用。

我正在使用 PHP 访问 USB 驱动器并获取文件信息,这工作正常,但是当我尝试在网页上显示图像时出现问题。

我正在使用 .htaccess 文件并尝试使用 mod_alias 将 USB 驱动器上的文件夹添加到网站中,这是我的 .htaccess 文件中的内容

    DirectoryIndex index.php
    Alias "/USB" "/mnt/sdb1/images"
    <Directory "mnt/sdb1/images">
        Options FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>
    AddType audio/mpeg .mp3

所以我知道 .htaccess 文件正在工作,因为它在我转到 LocalHost 时将我的 index.php 文件加载为主文件。

我知道U盘的文件路径是正确的,因为PHP脚本访问了它并收集了图像文件显示在页面上,所以PHP使用scandir获取所有文件夹中的图像 (/mnt/sdb1/images),它会正确回显页面以显示图像,例如;

    <img src="/USB/image1.jpg" />

但是图像没有加载到页面本身,我认为这是因为别名似乎不起作用。

请帮忙。

一种可能是您需要授予 www-data 对 USB 文件的访问权限。通常在 Apache 目录中,您将所有者设置为:

chown root:www-data *
chmod 750 * (for directories)
chmod 640 * (for files)

但是,您可能无法在 USB 驱动器上执行此操作(抱歉,从未处理过 USB),但如果它是一个特定的组,您可以将 www-data 添加到该组:

sudo usermod -a -G <USBGroup> www-data

因此,例如,我的虚拟机 (/media/sf_node) 上有一个共享驱动器,我猜它的工作原理很像 USB 驱动器。所以当我 运行 以下命令时:

ls -la /media/sf_node

我明白了:

drwxrwx--- 1 root vboxsf 4096 Jan 27 11:10 web

显示该目录的组 vboxsf。然后我可以做一个:

usermod -a -G vboxsf www-data