我有一个包含多个子目录的项目。一切正常,除非我尝试访问/ root / javascript目录中的文件,我得到404.文件确实存在,我实际上正确地键入路径。如果我只是重命名目录,我就可以访问这些文件。重新命名,我再次获得404。 VHost文件工作正常。没有涉及.htaccess文件。
Apache版本:2.4.9
操作系统:Ubuntu 13.10
答案 0 :(得分:6)
经过多次搜索和尝试不同的事情后,问题归结为:
默认情况下,Ubuntu上的Apache 2.4启用一个名为javascript-common的配置文件,它将任何请求重定向到/ javascript中的文件(即项目根目录中名为' javascript'的目录)到/ usr / share / javascript。
解决方案1
使用以下命令禁用javascript-common配置文件:
a2disconfig javascript-common
解决方案2
在/ usr / share / javascript目录中添加JavaScript文件。这样Apache实际上会找到这些文件,并且不会返回404。以这种方式做事的一个好处是你不需要多个项目使用的相同文件(jquery.js等等)的多个副本......
解决方案3
删除目录/ usr / share / javascript,并创建指向项目&javascript目录的符号链接。请记住,如果您有多个项目(vhost文件),它们将从原始项目的相同JavaScript文件中提供服务。换句话说,这可能不是最好的解决方案......
答案 1 :(得分:3)
a2disconfig解决方案对我没有用,但是经过一些搜索,我意识到javascript-common是可以卸载的东西。
所以我通过删除javascript-common:
解决了这个问题sudo apt-get remove javascript-common
我不确定此软件包的重点,或者为什么会自动安装,但我很高兴我的javascript文件再次加载!
答案 2 :(得分:2)
我正在使用lamp-server bundle运行Ubuntu 14.04.1 LTS
遇到同样的问题,我发现一个类似的答案解决了它。
sudo a2disconf javascript-common sudo service apache2 restart
在a2disconf之后(注意它现在显然是a2disconf而不是a2disconfig) 我确实收到了执行“sudo service apache2 reload”的消息
重新加载没有解决问题...因此重启
作为旁白 - 我无法想象开发人员在加载这个小宝石时的想法 - 我的一些javascript文件可能跨域可行......但肯定不是全部!
答案 3 :(得分:0)
您可以在.conf中覆盖/ javascript别名以反映您的需求:
Alias / javascript / my_custom_dir