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

时间:2014-02-11 15:29:59

标签: apache ubuntu debian

突然间,我开始为http://example.localhost/javascript/jquery.min.js

等文件获取404

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

但是现在如果我尝试访问/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

6 个答案:

答案 0 :(得分: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/
...

在使用Google搜索该配置文件名后,我找到了some explanation

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

答案 1 :(得分:7)

issue

  

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

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

推荐修复

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

另一个修复:

转到/etc/apache2/conf-available/javascript-common.conf。你会发现:

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

所以你只需要注释这些行(使用#字符)(不建议直接在启用conf的情况下编辑文件)以避免出现禁止错误。之后,执行此操作:

a2disconf javascript-common
a2enconf javascript-common

答案 2 :(得分:6)

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

a2disconf javascript-common
service apache2 reload

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

a2enconf javascript-common
service apache2 reload

答案 3 :(得分:1)

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

我去了并编辑了该文件(以root用户身份),并通过将顶行更改为

将其更改为别名/javascript-common而不是/javascript
Alias /javascript-common /usr/share/javascript/

并保存并重新启动Apache。

答案 4 :(得分:1)

我在Ubuntu系统上遇到了类似的问题。显然,SortableElement包在某个时间点被清除,配置脚本无法正常运行。删除javascript-common并使用apt-get重新安装无法解决问题。我必须:

javascript-common

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

答案 5 :(得分:-3)

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

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

然后重新安装javascript-commonapache2