Apache-2.2

未找到 Javascript 404,但正在載入 PHP 和 CSS

  • May 5, 2016

我有一個執行預設 LAMP 堆棧的 Ubuntu 10.04.4 LTS 雲伺服器。

我的網站正在為我的 PHP 頁面、圖像和 CSS 提供服務,並且我的大部分 JS 正在載入,但是有一個特定的文件夾沒有載入 javascript 文件。

如果我訪問我的網站site.com/javascript/search.js ,那麼我會收到 404。如果我訪問site.com/includes/formvalidation.js,那麼 JS 文件就會載入。

這顯示了includejavascript文件夾的權限:

user@server~site/httpdocs$ ls -la | grep includes
drwxr-xr-x  5 user www-data    4096 Jun 14 23:53 includes

user@server~site/httpdocs$ ls -la includes | grep .js
-rwxr-xr-x  1 user www-data 20974 Mar  2 22:33 formvalidation.js

user@server~site/httpdocs$ ls -la | grep javascript
drwxr-xr-x  3 user www-data    4096 Jun  3 11:03 javascript

user@server~site/httpdocs$ ls -la javascript | grep .js
-rwxrw-r-x  1 user www-data  7276 Mar  2 22:33 calendar.js
-rwxrw-r-x  1 user www-data 33321 Jun  3 11:03 cookieControl-5.1.min.js
-rwxrw-r-x  1 user www-data 15552 Mar  2 22:33 image_display.js
-rwxrw-r-x  1 user www-data 21130 Mar  2 22:33 popcalendar.js
-rwxrw-r-x  1 user www-data 67956 Mar  2 22:33 search.js
-rwxrw-r-x  1 user www-data   555 Mar 31 00:15 sell.js
-rwxrw-r-x  1 user www-data   318 Mar 31 00:15 sign_in.js
-rwxrw-r-x  1 user www-data   142 Mar 31 00:15 update.js

所以文件被上傳了,它與includes中的其他文件具有相同的權限*,並且includesjavascript*文件夾都具有相同的權限。

沒有**.htaccess**文件,這在我的開發伺服器上本地執行良好,只有當我實時推送時我才會遇到問題。

更新:我製作了一個文件test.js並將其放在根目錄下。這可以在site.com/test.js查看。我移動了,`mv test.js javascript/* 並訪問site.com/javascript/test.js給出了 404

更新:檢查*/var/log/apache2/error.log*顯示文件不存在:/usr/share/javascript/search.js

更新:我在我的*/etc/apache2文件夾中搜尋了**javscript*並找到了這個:

user@site:/etc/apache2$ grep -iR javascript ./       
./mods-available/deflate.conf: AddOutputFilterByType DEFLATE application/x-javascript application/javascript  application/ecmascript    
./mods-enabled/deflate.conf: AddOutputFilterByType DEFLATE application/x-javascript application/javascript application/ecmascript
./conf.d/javascript-common.conf:Alias /javascript /usr/share/javascript/
./conf.d/javascript-common.conf:<Directory "/usr/share/javascript/">

看起來您的./conf.d/javascript-common.conf:文件中有一個別名導致 Apache 在錯誤的位置查找。正如您所指出的,刪除這些條目解決了問題,Apache 很高興。

這對我有用

sudo a2disconf javascript-common

這將刪除javascript-common.conffromconf-availableconf-enabled

引用自:https://serverfault.com/questions/521585