突然间,我开始为http://example.localhost/javascript/jquery.min.js
等文件获取404S
早些时候一切都很顺利。 我没有更改任何配置,至少没有手动更改。
但是现在,如果我试图访问/javascript
目录本身,我会在Apache错误日志中得到“无法服务目录/usr/share/javascript/:找不到匹配的目录索引(index.html,index.cgi,index.pl,index.php,index.xhtml,index.htm),以及服务器生成的目录索引被Options指令禁止
。
我试图在堆栈溢出上找到解决方案,但我无法解决。 所以如果有人碰巧遇到同样的问题,我就把这个留在这里。
那么,为什么它会出现在/usr/share/javascript中,而不是我在VirtualHost中配置的内容。 为了弄清楚这一点,我做了如下的事情:
$ cd /etc/apache2
$ grep -R Alias * | grep share
...
conf-enabled/javascript-common.conf:Alias /javascript /usr/share/javascript/
...
在谷歌搜索该配置文件名后,我找到了一些解释。
我不知道为什么,但是我安装了javascript-common包。 去掉它似乎没有什么坏处,所以做$sudoapt-get purge javascript-common
为我解决了这个问题。
使用JavaScript的Web应用程序需要通过HTTP来分发它。 为每个脚本使用公共路径可以避免在HTTP服务器中为每个包启用此路径。
这个包创建/usr/share/javascript
别名,并在Apache Web服务器中启用它。
就这样了。 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-enabled中编辑文件),以避免出现禁止的错误。 之后,执行以下操作:
a2disconf javascript-common
a2enconf javascript-common
您不需要编辑conf文件或清除包,只需禁用它。
a2disconf javascript-common
service apache2 reload
如果出于某种原因要使用conf:
a2enconf javascript-common
service apache2 reload