У меня есть облачный сервер Ubuntu 10.04.4 LTS, на котором работает стек LAMP по умолчанию.
Мой веб-сайт обслуживает мои PHP-страницы, изображения и CSS для них, и большая часть моего JS загружается, но есть определенная папка, которая не загружает файлы javascript.
Если я захожу на свой сайт, site.com/javascript/search.js тогда я получаю 404. Если я приду site.com/includes/formvalidation.js затем загружается файл JS.
Это показывает разрешения на включает и javascript папка:
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
Итак, файл загружен, он имеет те же разрешения, что и другие файлы в включает, а включает и javascript обе папки имеют одинаковое разрешение.
Нет никаких .htaccess файл, и это отлично работает локально на моем сервере Dev, проблема возникает только тогда, когда я нажимаю вживую.
ОБНОВИТЬ: Я создал файл, 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
ОБНОВИТЬ: Я искал javscript в моем / и т.д. / apache2 папку и нашел это:
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/">
Это сработало для меня
sudo a2disconf javascript-common
Это удаляет javascript-common.conf
из conf-available
и conf-enabled
.
Похоже, в вашем ./conf.d/javascript-common.conf:
файл, из-за которого Apache смотрел не в том месте. Как вы заметили, удаление этих записей устранило проблему, и Apache остался доволен.