Password Protect All but One File (htaccess)
Once in a while need to allow someone access to one file but no other files in the same directory. I often solve this problem by moving the one file to a sub directory and then adding the following to an htaccess file in that same sub directory.
allow from all satisfy any
This normally works well but is not a perfect solution since it is not always appropriate to move the file to a different directory. So, I took the time and figured out how to password protect everything but one file. Below is the basic password protection that I had in the htaccess file that blocked everything in the directory (and sub-directories).
AuthGroupFile /dev/null AuthName "A Blog" AuthType Basic AuthUserFile /path/to/.htpasswd require valid-user
Now in order to exclude a file I just had to add the following below the above six lines of code.
<Files "page.html"> Allow from all Satisfy any </Files>
Of course this can be taken one step further if you wanted to exclude multiple files from password protection.
<FilesMatch "(page1\.html)|(page2\.html)"> Allow from all Satisfy any </FilesMatch>
FilesMatch can take a regular expression so you don’t necessarily have to list out each file. The below code will also accomplish the same thing (as above).
<FilesMatch "page[1-2]\.html"> Allow from all Satisfy any </FilesMatch>
![[Ask]](http://brett.batie.com/wp-content/plugins/bookmarkify/ask.png)
![[del.icio.us]](http://brett.batie.com/wp-content/plugins/bookmarkify/delicious.png)
![[Digg]](http://brett.batie.com/wp-content/plugins/bookmarkify/digg.png)
![[Facebook]](http://brett.batie.com/wp-content/plugins/bookmarkify/facebook.png)
![[Google]](http://brett.batie.com/wp-content/plugins/bookmarkify/google.png)
![[LinkedIn]](http://brett.batie.com/wp-content/plugins/bookmarkify/linkedin.png)
![[MySpace]](http://brett.batie.com/wp-content/plugins/bookmarkify/myspace.png)
![[Reddit]](http://brett.batie.com/wp-content/plugins/bookmarkify/reddit.png)
![[Slashdot]](http://brett.batie.com/wp-content/plugins/bookmarkify/slashdot.png)
![[Sphere]](http://brett.batie.com/wp-content/plugins/bookmarkify/sphere.png)
![[StumbleUpon]](http://brett.batie.com/wp-content/plugins/bookmarkify/stumbleupon.png)
![[Technorati]](http://brett.batie.com/wp-content/plugins/bookmarkify/technorati.png)
![[Twitter]](http://brett.batie.com/wp-content/plugins/bookmarkify/twitter.png)
![[Windows Live]](http://brett.batie.com/wp-content/plugins/bookmarkify/windowslive.png)
![[Yahoo!]](http://brett.batie.com/wp-content/plugins/bookmarkify/yahoo.png)
![[Email]](http://brett.batie.com/wp-content/plugins/bookmarkify/email.png)

December 30th, 2008 at 8:32 am
Thank you sir, you’re a lifesaver :)
July 15th, 2010 at 7:27 am
Good article! Completely solved my problem, I was busy playing with in the httpd.conf…