Index: qSEOptimizer/trunk/skins/qSEOptimizer/2.1.1/header.pt
===================================================================
--- qSEOptimizer/trunk/skins/qSEOptimizer/2.1.1/header.pt	(revision 519)
+++ qSEOptimizer/trunk/skins/qSEOptimizer/2.1.1/header.pt	(revision 1075)
@@ -41,4 +41,5 @@
           tal:attributes="name python:keyval[0];
                           content python:keyval[1];" />
+    <link rel="canonical" href="" tal:attributes="href here/qSEO_Canonical" />
 
     <metal:js metal:use-macro="here/renderAllTheScripts/macros/jsrenderer">SSS
Index: qSEOptimizer/trunk/skins/qSEOptimizer/2.1.2/header.pt
===================================================================
--- qSEOptimizer/trunk/skins/qSEOptimizer/2.1.2/header.pt	(revision 519)
+++ qSEOptimizer/trunk/skins/qSEOptimizer/2.1.2/header.pt	(revision 1075)
@@ -41,4 +41,5 @@
           tal:attributes="name python:keyval[0];
                           content python:keyval[1];" />
+    <link rel="canonical" href="" tal:attributes="href here/qSEO_Canonical" />
 
     <metal:js metal:use-macro="here/renderAllTheScripts/macros/jsrenderer">SSS
Index: qSEOptimizer/trunk/skins/qSEOptimizer/2.1.3/header.pt
===================================================================
--- qSEOptimizer/trunk/skins/qSEOptimizer/2.1.3/header.pt	(revision 519)
+++ qSEOptimizer/trunk/skins/qSEOptimizer/2.1.3/header.pt	(revision 1075)
@@ -41,4 +41,5 @@
           tal:attributes="name python:keyval[0];
                           content python:keyval[1];" />
+    <link rel="canonical" href="" tal:attributes="href here/qSEO_Canonical" />
 
     <metal:js tal:define="scripts nocall:here/renderAllTheScripts|nothing"
Index: qSEOptimizer/trunk/skins/qSEOptimizer/2.1.4/header.pt
===================================================================
--- qSEOptimizer/trunk/skins/qSEOptimizer/2.1.4/header.pt	(revision 519)
+++ qSEOptimizer/trunk/skins/qSEOptimizer/2.1.4/header.pt	(revision 1075)
@@ -41,4 +41,5 @@
           tal:attributes="name python:keyval[0];
                           content python:keyval[1];" />
+    <link rel="canonical" href="" tal:attributes="href here/qSEO_Canonical" />
 
     <metal:js tal:define="scripts nocall:here/renderAllTheScripts|nothing"
Index: qSEOptimizer/trunk/skins/qSEOptimizer/2.1/header.pt
===================================================================
--- qSEOptimizer/trunk/skins/qSEOptimizer/2.1/header.pt	(revision 519)
+++ qSEOptimizer/trunk/skins/qSEOptimizer/2.1/header.pt	(revision 1075)
@@ -40,4 +40,5 @@
           tal:attributes="name python:keyval[0];
                           content python:keyval[1];" />
+    <link rel="canonical" href="" tal:attributes="href here/qSEO_Canonical" />
 
     <metal:js metal:use-macro="here/renderAllTheScripts/macros/jsrenderer">
Index: qSEOptimizer/trunk/skins/qSEOptimizer/2.5.1/header.pt
===================================================================
--- qSEOptimizer/trunk/skins/qSEOptimizer/2.5.1/header.pt	(revision 519)
+++ qSEOptimizer/trunk/skins/qSEOptimizer/2.5.1/header.pt	(revision 1075)
@@ -41,4 +41,5 @@
           tal:attributes="name python:keyval[0];
                           content python:keyval[1];" />
+    <link rel="canonical" href="" tal:attributes="href here/qSEO_Canonical" />
 
     <metal:js tal:define="scripts nocall:here/renderAllTheScripts|nothing"
Index: qSEOptimizer/trunk/skins/qSEOptimizer/2.5.2/header.pt
===================================================================
--- qSEOptimizer/trunk/skins/qSEOptimizer/2.5.2/header.pt	(revision 519)
+++ qSEOptimizer/trunk/skins/qSEOptimizer/2.5.2/header.pt	(revision 1075)
@@ -41,4 +41,5 @@
           tal:attributes="name python:keyval[0];
                           content python:keyval[1];" />
+    <link rel="canonical" href="" tal:attributes="href here/qSEO_Canonical" />
 
     <metal:js tal:define="scripts nocall:here/renderAllTheScripts|nothing"
Index: qSEOptimizer/trunk/skins/qSEOptimizer/2.5.3-final/header.pt
===================================================================
--- qSEOptimizer/trunk/skins/qSEOptimizer/2.5.3-final/header.pt	(revision 519)
+++ qSEOptimizer/trunk/skins/qSEOptimizer/2.5.3-final/header.pt	(revision 1075)
@@ -45,5 +45,6 @@
           tal:attributes="name python:keyval[0];
                           content python:keyval[1];" />
-
+    <link rel="canonical" href="" tal:attributes="href here/qSEO_Canonical" />
+    
     <metal:js tal:define="scripts nocall:here/renderAllTheScripts|nothing"
 	      tal:condition="nocall:scripts">
Index: qSEOptimizer/trunk/skins/qSEOptimizer/2.5.4-2/header.pt
===================================================================
--- qSEOptimizer/trunk/skins/qSEOptimizer/2.5.4-2/header.pt	(revision 519)
+++ qSEOptimizer/trunk/skins/qSEOptimizer/2.5.4-2/header.pt	(revision 1075)
@@ -45,4 +45,5 @@
           tal:attributes="name python:keyval[0];
                           content python:keyval[1];" />
+    <link rel="canonical" href="" tal:attributes="href here/qSEO_Canonical" />
 
     <metal:js tal:define="scripts nocall:here/renderAllTheScripts|nothing"
Index: qSEOptimizer/trunk/skins/qSEOptimizer/2.5.4-final/header.pt
===================================================================
--- qSEOptimizer/trunk/skins/qSEOptimizer/2.5.4-final/header.pt	(revision 519)
+++ qSEOptimizer/trunk/skins/qSEOptimizer/2.5.4-final/header.pt	(revision 1075)
@@ -45,4 +45,5 @@
           tal:attributes="name python:keyval[0];
                           content python:keyval[1];" />
+    <link rel="canonical" href="" tal:attributes="href here/qSEO_Canonical" />
 
     <metal:js tal:define="scripts nocall:here/renderAllTheScripts|nothing"
Index: qSEOptimizer/trunk/skins/qSEOptimizer/2.5.5/header.pt
===================================================================
--- qSEOptimizer/trunk/skins/qSEOptimizer/2.5.5/header.pt	(revision 519)
+++ qSEOptimizer/trunk/skins/qSEOptimizer/2.5.5/header.pt	(revision 1075)
@@ -46,4 +46,5 @@
           tal:attributes="name python:keyval[0];
                           content python:keyval[1];" />
+    <link rel="canonical" href="" tal:attributes="href here/qSEO_Canonical" />
 
     <metal:js tal:define="scripts nocall:here/renderAllTheScripts|nothing"
Index: qSEOptimizer/trunk/skins/qSEOptimizer/2.5/header.pt
===================================================================
--- qSEOptimizer/trunk/skins/qSEOptimizer/2.5/header.pt	(revision 519)
+++ qSEOptimizer/trunk/skins/qSEOptimizer/2.5/header.pt	(revision 1075)
@@ -41,4 +41,6 @@
           tal:attributes="name python:keyval[0];
                           content python:keyval[1];" />
+    <link rel="canonical" href="" tal:attributes="href here/qSEO_Canonical" />
+                          
 
     <metal:js tal:define="scripts nocall:here/renderAllTheScripts|nothing"
Index: qSEOptimizer/trunk/skins/qSEOptimizer/qseo_properties_edit.cpy
===================================================================
--- qSEOptimizer/trunk/skins/qSEOptimizer/qseo_properties_edit.cpy	(revision 519)
+++ qSEOptimizer/trunk/skins/qSEOptimizer/qseo_properties_edit.cpy	(revision 1075)
@@ -7,5 +7,5 @@
 ##bind subpath=traverse_subpath
 ##title=Update SEO Properties
-##parameters=title=None,description=None,keywords=None,html_comment=None,robots=None,distribution=None,title_override=0,description_override=0,keywords_override=0,html_comment_override=0,robots_override=0,distribution_override=0,custommetatags=[]
+##parameters=title=None,description=None,keywords=None,html_comment=None,robots=None,distribution=None,canonical=None,title_override=0,description_override=0,keywords_override=0,html_comment_override=0,robots_override=0,distribution_override=0,custommetatags=[]
 
 def setProperty(context, property, value, type='string'):
@@ -42,4 +42,5 @@
 setProperty(context, 'qSEO_robots', robots)
 setProperty(context, 'qSEO_distribution', distribution)
+setProperty(context, 'qSEO_canonical', canonical)
 
 if not title_override:        delete_list.append('qSEO_title')
Index: qSEOptimizer/trunk/skins/qSEOptimizer/qseo_properties_edit_form.cpt
===================================================================
--- qSEOptimizer/trunk/skins/qSEOptimizer/qseo_properties_edit_form.cpt	(revision 519)
+++ qSEOptimizer/trunk/skins/qSEOptimizer/qseo_properties_edit_form.cpt	(revision 1075)
@@ -262,5 +262,36 @@
                    />
           </div>
-
+          <div class="field"
+               tal:define="error errors/canonical|nothing;"
+               tal:attributes="class python:test(error, 'field error', 'field')">
+            <label i18n:translate="label_canonical_tag" for="canonical">
+              Canonical URL
+            </label>
+            <div class="formHelp" i18n:translate="help_seo_canonical">
+              Specify your canonical URL.
+              If your site has identical or vastly similar content that's accessible through multiple URLs,
+              this format provides you with more control over the URL returned in search results.
+            </div>
+            <input type="checkbox"
+                   id="canonical_override"
+                   name="canonical_override"
+                   tabindex=""
+                   tal:attributes="checked python:test(here.hasProperty('qSEO_canonical'), 'on', None);
+                                   tabindex tabindex/next;"
+                   />
+            <label i18n:translate="label_override" for="canonical_override">
+              Override
+            </label><br />
+            <div tal:content="error">Validation error output</div>
+            <input type="text"
+                   id="seo_canonical"
+                   name="canonical"
+                   size="55"
+                   value=""
+                   tabindex=""
+                   tal:attributes="value request/canonical | here/qSEO_Canonical;
+                                   tabindex tabindex/next;"
+                   />
+          </div>
           <div class="field"
                tal:define="fieldName string:custommetatags;">
