Q:

How to add canonical links on ALL URL's? 

What is the best way to get canonical links on ALL URL's in D7? 
I see nodes already have relative canonicals but I have a site with a lot of non node URL's that also need canonicals. 
I added code to my html.tpl.php to add a canonical on any page but now I get double ups on node based pages.  
Thanks for anyone taking a look at this. 
UPDATE:
I used a theme_html_head_alter() hook to remove the node canonicals. 
Then I added new canonicals into the html.tpl.php so every page has them and there is only one on the node pages. 

A:

As mentioned elsewhere, global redirect is a good option.  But even Metatag is a good module.  It not only handles the canonical urls but also meta keywords, description, Copyright data and many more important Meta data including OG.  So, you can also have a check on this module.  http://drupal.org/project/metatag and a tutorial on how to get the canonical url to work on this link: http://amitavroy.com/justread/content/articles/canonical-links-and-drupal-7
The one thing with meta tag module is that by default it will print relative canonical urls whereas I have seen major sites like smashingmagazine, engadget etc uses absolute.  So, if you want that to happen then the second url is the key. 

A:

I used a theme_html_head_alter() hook to remove the node canonicals. 
Then I added new canonicals into the html.tpl.php so every page has them and there is only one on the node pages.