You have three decent options besides the global rewrite you noted (it's very, very deprecated).
Possibly the easiest option is via webserver configuration (e.g.
RewriteRule for Apache).
Another option would be to add a new router class with a
match() method which recognizes your URL structure and can rewrite the request object just as the CMS router (
public function match(Zend_Controller_Request_Http $request)
Because the request is not marked as dispatched the router loop in
Mage_Core_Controller_Varien_Front::dispatch() will re-cycle and then the Standard router will match the new request structure.
Mage_Core_Controller_Varien_Front::dispatch() - in more recent versions of Magento it is also possible through configuration to inject your own rewrite class:
public function dispatch()
$this->_getRequestRewriteController() reads the value at
global/request_rewrite/model, which you can overwrite with your own value. You can extend the
Mage_Core_Model_Url_Rewrite_Request class and override the
rewrite() method, or you can implement your own class with a
rewrite() method which detects the URL param/structure you want to use and defers to the core class.