Drupal has some pretty amazing features to handle aliases and aliasing. They are also commonly misunderstood. This article is an attempt to shed some light on how URLs and aliases and redirects work in Drupal which, with the help of some contributed modules, automatically turn a Drupal site into a TinyURL-like service.
It All Starts With the Menu System
Most modules in Drupal have a hook into the menu system which allows them to declare paths to which they will respond. For example, the node module's hook to the menu system allows it to respond to requests for "/node/".
Clean URLs vs. ... Dirty? URLs
Drupal responds to the "q" parameter from the URL. http://growingventuresolutions.com/?q=node/1 tells Drupal to serve up the page for "node/1". Ever since about 2003 Drupal has used features of the web server so that http://growingventuresolutions.com/?q=node/1 can be "rewritten" to http://growingventuresolutions.com/node/1. This is the so-called "Clean URL" which removes the main query parameter from every Drupal page request. Sure, there are still some page requests like for the second page in a list of nodes but they are much less common.
Ever since Drupal 6.x, if your web server supports clean urls then they will be enabled during installation. This is great.
Internal Path vs. Path Alias