403 仅在 javascript 文件夹上禁止访问

403 Forbidden ONLY on javascript folder

我已经尝试解决这个问题 3 天了,在经历了许多其他 SO 问题后仍然无法弄清楚。

我正在使用 Apache 2.4.7 设置 DigitalOcean VPS。 2.4 的设置与以前的版本不同,所以这可能是我的部分问题。

问题

我正在从共享主机迁移,并尝试在新的 DO VPS 上测试我的网站。当我转到我的新 IP 地址时,网站加载了,但以下资源出现 404 错误:

<link href="/javascript/jquery-ui-1.9.2.custom/css/smoothness/jquery-ui-1.9.2.custom.css" rel="stylesheet">
<script src="/javascript/jquery-ui-1.9.2.custom/js/jquery-ui-1.9.2.custom.js"></script>
<script src="/javascript/dialog/alert_text.js"></script>

其他文件夹中的资源加载正常;例如,此样式表加载没有问题:

<link rel="stylesheet" type="text/css" href="/styles/main_style.css">

我将问题追踪到我的 /javascript 目录中的 403 禁止错误。此目录归同一 owner/group 所有,并且与我的网络根目录中的所有其他目录具有相同的权限 (755)。但出于某种原因,我无法从我的网络浏览器访问 /javascript。

我尝试了什么

这些文件确实存在于该位置的新服务器上。我检查过该文件夹是否正确,并且没有任何奇怪的大写字母。在旧服务器上一切正常,我所做的只是将目录结构复制并粘贴到新服务器上。

服务器上没有 .htaccess 文件。服务器不会关心是否有,因为 Alow Override None 已设置。

我已将 apache2.conf 改回默认状态,以确保没有奇怪的 <Directory> 指令。

我为 /javascript 文件夹添加了一个 <Directory> 并做了 Require all granted

我将 /javascript 文件夹的权限更改为 chmod 777 但没有任何效果,然后又更改回 chmod 755

每次更改后我都会重新启动网络服务器,但没有任何效果。我总是在 /javascript 目录上收到 403 禁止错误,即使所有者和权限与我的 Web 根目录中的所有其他目录完全相同。

有什么方法可以获取有关 403 错误的更多信息?找出不允许访问的原因的一些方法?

最后的笔记

需要注意的一件事是我还没有将我的 DNS 指向 DigitalOcean,因为我仍在测试。所以客户端浏览器是从 MY.IP.ADR.ESS/javascript/... 而不是 MYDOMAINNAME/javascript/... 加载的。我无法想象这会很重要,但我还是会提到它.

我发现了问题,这是一个已知问题:Ubuntu BUG

问题是文件夹的名称是 "javascript",解决方法是将我的 /javascript 文件夹重命名为 /java-script(或除 /java脚本).

基本上,如果您安装了 javascript-common 软件包,它会生成以下别名:

Alias /javascript /usr/share/javascript

所以我的 WEBROOT/javascript 文件夹被重定向到 /usr/share/javascript,出现 403 错误。

希望这有助于为其他人节省几天的故障排除时间!