Reading list Switch to dark mode

    How to set NOINDEX, NOFOLLOW on specific page programmatically Magento2

    Updated 20 May 2022

    In this guide, we will learn how can we change the robots of a particular page.

    There are several options for robots available that you can choose from:

    • INDEX, FOLLOW – If you want web crawlers to index a page and follow the links on that page.
    • NOINDEX, FOLLOW – If you don’t want web crawlers to index a page but want them to follow the links on that page.
    • INDEX, NOFOLLOW – If you want web crawlers to index a page and don’t want them to follow the links on that page.
    • NOINDEX, NOFOLLOW – If you want web crawlers neither to index a page nor to follow the links on that page.

    Now let’s see how we can set NOINDEX, NOFOLLOW on a particular page programmatically.

    Step 1 – You need to create di.xml in the below path:
    app/code/Vendor/ModuleName/etc/frontend/di.xml

    <?xml version="1.0" encoding="UTF-8"?>
    
    <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
        <type name="Magento\Framework\View\Page\Config\Renderer">
            <plugin name="seoRender" type="Webkul\Demo\Plugin\Robots"/>
        </type>
    </config>

    Step 2 – Now you need to create Robots.php in the below path:
    app/code/Vendor/ModuleName/Plugin/Robots.php
    And, add the below code

    Start your headless eCommerce
    now.
    Find out More
    <?php
    
    namespace Webkul\Demo\Plugin;
    
    use Magento\Framework\App\Request\Http;
    use Magento\Framework\View\Page\Config as PageConfig;
    use Magento\Framework\View\Page\Config\Renderer;
    
    class Robots
    {
        protected $pageConfig;
        protected $request;
        /**
         *
         * @param PageConfig $pageConfig
         * @param Http $request
         */
        public function __construct(
            PageConfig $pageConfig,
            Http $request
        ) {
            $this->pageConfig = $pageConfig;
            $this->request = $request;
        }
    
        /**
         * Before Render function
         *
         * @param Renderer $subject
         */
        public function beforeRenderMetadata(Renderer $subject)
        {
            $fullActionName = $this->request->getFullActionName();
            if ($fullActionName == 'catalog_product_view') {
                $this->pageConfig->setMetadata('robots', 'NOINDEX,NOFOLLOW');
            }
        }
    }

    That’s all about the setting NOINDEX, NOFOLLOW on specific page . If you have any questions please comment below, and we will try to respond to you.
    Happy Coding!!

    . . .

    Leave a Comment

    Your email address will not be published. Required fields are marked*


    Be the first to comment.

    Back to Top

    Message Sent!

    If you have more details or questions, you can reply to the received confirmation email.

    Back to Home