How to allow access to only a single file?

apache

Solution

NOTE: This Answer only applies to Version 2.2

If you are using Version 2.4 take a look at this answer or Look at the official Apache Documentation

You misused `<Location>` - the argument should be URI not the directory path... You should use `<Directory>` to get the expected behavior.

I would do something like this (you should finetune it, it shows just the principle):

# first deny access to everything
<Location />
 Order Deny,Allow
 Deny from All
</Location>

# then allow access to specific URL
<Location /test/test.js>
 Order Allow,Deny
 Allow from All
</Location>

Have a look on Order directive and one or more of following: Location, LocationMatch, Directory, DirectoryMatch, Files, FilesMatch, etc.

Problem

I have a apache machine which is serving a `.js` file. That file should be the only file that need to seen. I have configured to do so in my apache like this : ``` <Location /var/www/test/test.js> Order allow,deny Allow from all </Location> ``` The site address is `test.in` which points to `test.js` file in `/var/www/test` directory. That is working fine. But I wish when the user tries to hit `test.in/someurl` (which is not available) or some other url than `test.in` need to give an message with `401` error. How do I do that? Thanks in advance.

Original source

Related problems