Mac OS X and per-user Support for .htaccess
Problem
I just spent a fair amount of time wrestling with Apache on my Macintosh. The problem is that it simply refused to read the .htaccess file in my user directory.
My First Approach
I took the “Unix Guy” approach and edited /etc/httpd/httpd.conf to ensure that Apache was configured to consult my user’s .htaccess file. I changed this bit:
<Directory /Users/*/Sites>
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes FollowSymLinks IncludesNoExec
[ . . . ]
To read:
<Directory /Users/*/Sites>
# AllowOverride FileInfo AuthConfig Limit
AllowOverride All
Options MultiViews Indexes FollowSymLinks IncludesNoExec
[ . . . ]
But . . . nada.
Why That Didn’t Work
Eventually, I found the answer in an O’Reilly Tutorial. Under the section “User-Based Configurations” Kevin Hemenway explains how “per-user” configurations are done in the world of Macintosh:
mini-toldme-com:~/Sites djh$ ls /etc/httpd/users/
djh.conf
mini-toldme-com:~/Sites djh$ cat /etc/httpd/users/djh.conf
<Directory "/Users/djh/Sites/">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
The O’Reilly article explains that you could edit that file, sure, but then on the next page, it suggests that .htaccess may be a bit more convenient:
As you’ve run through these various tweaks and twiddles of the Apache configuration file, one thing has always remained true: to make the changes active, you’ve had to stop and start Apache after each edit. Not only is this tedious and subject to forgetfulness, it’s also avoidable with a little thing called an
.htaccessfile.
He then goes on to explain the AllowOverride thing, but doesn’t point out that /etc/httpd/users is going to spank you. Hopefully, his readers paid enough attention and know that within their ~/Sites directory they’ll have to edit /etc/httpd/users/`whoami`.conf . . .
How I Fixed It
I considered changing my /etc/httpd/users/djh.conf but I suspected that some day whatever created it might create it anew, clobbering my changes, and I would forget it had ever existed, and I would go through this frustration all over again. Since I had already made the appropriate change in my /etc/httpd/httpd.conf and since I am the only user on the system, I simply made one more edit to /etc/httpd/httpd.conf. Down near the end, I changed this line:
Include /private/etc/httpd/users/*.conf
To this:
# What the f_ck g_d d_mned insanity!? # Include /private/etc/httpd/users/*.conf
Restart Apache and now I can use .htaccess as much as I please.
Comment
Tiny Print:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>