Apache不提供“javascript”目录中的文件。为什么?

问题描述 投票:14回答:6

突然之间,我开始为像http://example.localhost/javascript/jquery.min.js这样的文件获得404s

早些时候一切都很好。我没有改变任何配置,至少不是手动。

但是现在如果我尝试访问/javascript目录本身,我会在Apache错误日志中获得"Cannot serve directory /usr/share/javascript/: No matching DirectoryIndex (index.html,index.cgi,index.pl,index.php,index.xhtml,index.htm) found, and server-generated directory index forbidden by Options directive

apache ubuntu debian
6个回答
23
投票

我试图在Stack Overflow上找到解决方案,但我不能。所以如果有人碰巧遇到同样的问题我就离开这里。

那么为什么它会在/ usr / share / javascript中看起来而不是我在VirtualHost中配置的内容。为了解决这个问题,我做了类似以下的事情:

$ cd /etc/apache2
$ grep -R Alias * | grep share

...
conf-enabled/javascript-common.conf:Alias /javascript /usr/share/javascript/
...

在谷歌搜索配置文件名后,我找到了some explanation

我不知道为什么,但我安装了javascript-common包。摆脱它似乎没有害处,所以做$ sudo apt-get purge javascript-common解决了我的问题。


7
投票

The issue:

使用JavaScript的Web应用程序需要通过HTTP分发它。为每个脚本使用公共路径可以避免在HTTP服务器中为每个包启用此路径。

这是创建/usr/share/javascript别名的包,并在Apache Web服务器中启用它。

Recommended fix

就是这样。 javascript目录不会有任何其他问题。另一个修复可能是将/usr/share/javascript/重命名为/usr/share/javascript-common/,然后调整javascript-common.conf中的Alias以指向重命名的目录。我仍然不确定这是否会影响任何未来的更新。

Another Fix:

/etc/apache2/conf-available/javascript-common.conf。你会发现这个:

Alias /javascript /usr/share/javascript/
<Directory "/usr/share/javascript/">
     Options FollowSymLinks MultiViews
</Directory>

所以你只需要注释这些行(使用# char)(不建议直接在conf-enabled中编辑文件)以避免禁止错误。之后,执行以下操作:

a2disconf javascript-common
a2enconf javascript-common

6
投票

您不需要编辑conf文件或清除包只是禁用它。

a2disconf javascript-common
service apache2 reload

如果由于某种原因你想使用那个conf:

a2enconf javascript-common
service apache2 reload

1
投票

我在Debian机器上,没有a2disconf命令。我发现/etc/apache2/conf.d目录是/etc/javascript-common/javascript-common.conf的链接。

我去编辑了那个文件(以root用户身份)并通过将顶行更改为更改为别名/javascript-common而不是/javascript

Alias /javascript-common /usr/share/javascript/

并保存并重新启动Apache。


1
投票

我在Ubuntu系统上遇到了类似的问题。显然,javascript-common软件包在某个时间点被清洗,配置脚本无法正常运行。删除javascript-common并使用apt-get重新安装无法修复它。我不得不:

dpkg --purge javascript-common

apt-get install javascript-common

而这似乎解决了这个问题。这是从Ubuntu 16.04 LTS(Trusty Tahr)升级的Ubuntu 14.04 LTS(Xenial Xerus)系统。


-3
投票

卸载apache2并删除这些文件夹:

  • rm -R / var / www / html /
  • rm -R / etc / apache2

然后重新安装javascript-commonapache2

© www.soinside.com 2019 - 2024. All rights reserved.