In realtà tutti i CMS decenti ottengono l'URI base o da $_SERVER['PHP_SELF'] o da $_SERVER['SCRIPT_FILENAME'] o da __FILE__ e, una volta che cambia il valore dell'URI base, aggiornano tutti i links di conseguenza. Non è un grosso lavoro dato che ogni URI viene analizzato dalla stessa funzione (mica devono cambiare tutti gli URI nei templates).
In caso di un CMS non decente, si può usare il tag html <base>:
http://www.w3.org/TR/html401/struct/links.html#h-12.4
Questa è comunque da considerarsi una pezza.