Ubuntu: Apache is not serving files from the “javascript” directory
This strange issue occurred today on one of the new servers I prepared. I moved the test website from my client’s machine and I was testing it to check what is working and what is not.
Suddenly I noticed that the javascript files stored in the “javascript” directory are causing 404 (not found) errors. One of the files I tried to load was https://testserver.com/javascript/PopupWindow.js
I checked the following:
- if the file exists (it existed)
- if the permissions are fine (were fine)
- if the test.txt file from the same directory is loaded (was NOT loaded!)
- if the same file is available if moved to another directory (and the file was AVAILABLE!)
So, it looks like the issue lies in the “javascript” directory itself. I turned on detailed logging in Apache (by adding “LogLevel debug” to my site configuration) and this is what I found in the logs:
[date] [client 11.22.33.44:54193] AH00128: File does not exist: /usr/share/javascript/PopupWindow.js
It surfaced that it was trying to load my script from the “/usr/share/javascript/” directory instead of the website directory. This was strange… I started to dig in the Apache configuration:
# cd /etc/apache2/ # grep javascript -R * conf-available/javascript-common.conf:Alias /javascript /usr/share/javascript/ conf-available/javascript-common.conf:<Directory "/usr/share/javascript/"> conf-enabled/javascript-common.conf:Alias /javascript /usr/share/javascript/ conf-enabled/javascript-common.conf:<Directory "/usr/share/javascript/">
Here is the thing! There is an alias defined to switch all “/javascript” requests to the “/usr/share/javascript” directory! So the solution was simple. I commented out the Alias in the “javascript-common.conf” file. Once the alias was commented and the server restarted, the files are served properly. Fortunately, this was an easy one 🙂