Archives
Admin / Logout

Adam Merrifield

a picture of me
I am a web designer, theme designer, professional photographer and internet personality. I make many pretty things and I write a lot of content for the internet.

I am one of those guys that, because of the industry I am in, need to be connected at all times. At any given moment you'll find me posting on a forum, updating with twitter, Digging things worthy of attention, uploading pictures, or tagging cool sites.

here i am

seyDoggy Systems:
This is home base, the corporate headquarters, the hub, if you will, seyDoggy.com.

seyDesign news:
these are the RapidWeaver related posts that originally appear in the seyDesign.com blog

Uploads from seyDoggy:
these are the pictures that I upload to flickr

Merrifield Photography:
as a professional photographer I my camera ready at Merrifield-Photography.com.

delicious.com/seydoggy:
these are the websites I want to share or revisit later on. I just tag them on delicious.com.

what i am

I am the owner and operator of seyDoggy Systems, a small theme, code and design outfit based in Kitchener, Ontario, Canada. We primarily develop web based technologies but have begun to dabble in the desktop realm.

what i do

I code like a fool. I design like a fool. I am happiest when I can split my time between the two (though I tire of Photoshop faster then I do TextMate or Terminal), and somehow I have managed to etch out a living doing so.

Apache mod_rewrite, PHP and OS X 10.6 Snow Leopard

Getting mod_rewrite to work on your mac (i.e. locally) can be a bit of a trick if you’ve never bothered to try before. This was the case with me just last week. I am in the process of rewriting my CMS for seyDesign which will rely heavily on $_GET queries. I still want users to be able to link to their favorite pages with easy-to-read and remember “flat” URL’s so I needed to be able rewrite links like this:

http://seydesign.com/index.php?page=themes&product=123

…so that they appear in the users address bar like this:

http://seydesign.com/themes/Creami3/

The best way to do this is with the Apache module, mod_rewrite. I won’t get into how exactly to use it here, but you should be able to use mod_rewrite both on your remote server and on your local machine. For instance, the above two examples, when viewed from the localhost would look like this:

http://localhost/index.php?page=themes&product=123

…which, for the viewer, converts to:

http://localhost/themes/Creami3/

Using mod_rewrite in MAMP, my preferred AMP stack for local development, was simple enough as MAMP is preconfigured to do so. But since I use MAMP for testing support cases, and since I knew that the new new seydesign build will be an on-going project, I decided to move it onto the built in web stack on Mac OS X 10.6 Snow Leopard, to give it a permanent home I could access at any time.

The trouble for me arose when I tried to use mod_rewrite on the built in OS X web stack. It seems that the permission to use mod_rewrite, or at least to set the rules from .htaccess, are forbidden. In addition, PHP is disabled by default (I can’t very well write $_GET queries without PHP).

Every resource I found online had me editing the /etc/apache2/httpd.conf file, which is all well and good until Apple comes along and updates the Apache install.

A better approach, I feel, is to make any changes to the user config file and leave the default httpd.conf alone. So the first thing I did was open this file (replace username with your user name):

/etc/apache2/users/username.conf

By default, its content should look like this:

<Directory "/Users/username/Sites/">
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

To get PHP running and mod_rewrite to work you need to make a few changes. For starters, if you notice in the /etc/apache2/httpd.conf file, this line is commented out:

# LoadModule php5_module libexec/apache2/libphp5.so

So let’s add that to out own config file and uncomment it, so our username.conf file now looks like this:

LoadModule php5_module        libexec/apache2/libphp5.so

<Directory "/Users/username/Sites/">
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

It will make our life easiest if we point to DocumentRoot our way as opposed to where the httpd.conf file points, /Library/WebServer/Documents. In my case, it’s /Users/username/Sites/build/seyDesign2011 but you can make it where ever you like. We also want to change our directory to match, so our username.conf file now looks like this:

LoadModule php5_module        libexec/apache2/libphp5.so
    
DocumentRoot "/Users/username/where/ever/you/like"

<Directory "/Users/username/where/ever/you/like">
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

To get mod_rewrite to work from .htaccess we need to do two more things; we need to add +FollowSymLinks or FollowSymLinks to our options and we need to change the AllowOverride setting to All.

Our username.conf file should now looks like this:

LoadModule php5_module        libexec/apache2/libphp5.so
    
DocumentRoot "/Users/username/where/ever/you/like"

<Directory "/Users/username/where/ever/you/like">
    Options Indexes MultiViews +FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

And that’s it. Once you have enabled web sharing in System Preferences > Sharing (or restarted apache from the command line, sudo apachectl restart), you are free to create your mod_rewrite rules to your hearts content from an .htaccess file served up on http://localhost/.

Comments (1) | Trackback

Unstick the Stuck File in Finders Trash

Ever get a file stuck in the trash with no way to empty it? You know that message you get when you try and empty the trash:

Can’t complete the operation because the item “ABC.XYZ” is in use.

If you look for a solution online you are often told to hold the option key while selecting Finder > Empty Trash (⌥⇧⌘⌫), or just reboot. While the first option never works, the second option does but seriously, how practical is that?

So here are two terminal commands to help you a) track down what application is holding the files hostage or b) properly force the trash to empty.

This first command, where filename is the name and extension of the file being held hostage, shows you what app or process has it’s death grip on that file:

lsof | grep filename

The second command, should all else fail, allows you to perform a proper force-empty trash:

rm -rf ~/.Trash
Comments (3) | Trackback
Powered by RapidWeaver, WP-Blog and WordPress 3.3.1