Webkul
Services
Technologies Bagisto QloApps
iOS Android SAP BigCommerce Wix
Trusted by
Samsung Intel Toyota Walmart Disney Nokia Nestlé Decathlon
See all customers
Back to Top
DEV

How to set NOINDEX, NOFOLLOW on specific page programmatically Magento2

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

<?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