Mac OS X and per-user Support for .htaccess
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 [ . . . ]
<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
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:
# 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.