I want to add canonical tag for all cms pages. Currently canonical tag enabled for category and product page.

How to do this?


Go to Admin Panel > Content > Pages > Opne CMS Page > Design > Layout Update XML

Add code in there

      <link rel="canonical" src="www.example.com/page-url-key" src_type="url"/>


To add in Catalog Search Result Page.

Add following code into catalogsearch_result_index.xml in


<referenceBlock name="head.additional">
    <block class="Magento\Framework\View\Element\Template" name="search_canonical" template="Magento_CatalogSearch::canonical.phtml" />

Create PHTML file for canonical URL code.


<link  rel="canonical" href="<?php echo $this->getBaseUrl().'catalogsearch/result/'; ?>" />

Don't forget to flush the cache.

  • It didnt work at first but now it does. Cash has to be flushed and not refreshed. Sep 11 '18 at 14:35
  • I already mentioned Flush not Refreshed. Glad that It worked :) Sep 11 '18 at 14:38
  • @AbhishekPanchal, how to include this only on search result page? Dec 18 '18 at 10:01
  • @jafarpinjar Please check my updated code. Dec 18 '18 at 14:44
  • @AbhishekPanchal, Thanks i added in default.xml inside catalog_search module. And i can see its working. Dec 18 '18 at 14:49

You can do it from the Backend in Layout Update XML using the following snippet.

Due the fact that only referenceContainer, container, update, move elements are allowed.

<container name="canonical.url.container">
<block class="Magento\Framework\View\Element\Text" name="canonical.url">
<argument name="text" xsi:type="string"><![CDATA[<link rel="canonical" href="https://example.com" />]]></argument>
<move element="canonical.url.container" destination="head.additional" before="-" />

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.