How to change robots.txt in a WordPress multisite

WordPress dynamically creates robots.txt. To overwrite it during a normal, non-multisite installation, you can simply upload a static robots.txt file to the server. In a multi-site installation, this will overwrite the robots.txt file for all sites, which is not always the desired result. In this post, we will discuss how you can change the robots.txt for individual multisite sites.

WordPress has a do_robots() function and a do_robotstxt filter that allows you to change the output of a dynamically generated robots.txt file. The is_multisite() function allows you to check if multisite is enabled on the site. Function get_current_blog_id() returns the ID of the current site, which we can use to check the specific site and add rules to the robots.txt file. This is roughly what it might look like:

function wpz_robots_txt( $output, $public ) {

	if ( is_multisite() ) {
		if ( get_current_blog_id() === 1 ) {
			$output .= "Disallow: /account/\n";
			$output .= "Disallow: /cart/\n";
		} else {
			$output .= "Disallow: /category\n";
			$output .= "Disallow: /news\n";
		}
	}

	return $output;
}

add_filter( 'robots_txt', 'wpz_robots_txt', 20, 2 );

For the site with ID 1 (online store) added rules that close the account and shopping cart pages, and for all other sites closed categories and news.

How useful is the publication?

Click on a star to rate it!

Average score 5 / 5. Number of grades: 1

No ratings yet. Rate it first.

Similar posts

How to Make Different Templates for Categories and Subcategories in WordPress

In the base template hierarchy, you can use the following category templates: category-{slug}.php category-{id}.php categories.php But, if you need to apply different php templates for categories and subcategories, you can use the category_template hook and check if the current category has a parent element, in which case load e.g. subcategory.php: If your task is to…
Read more

How to add pagination for pages or cpt using WP_Query()

WordPress is designed so that you can paginate any query for posts from the database using WP_Query(), because the necessary ‘paged’ and ‘posts_per_page’ arguments are already present in the query. By pagination we mean page navigation. For example, if we specify the output of 10 posts per page and the WP_Query() response returns information about…
Read more

How to exclude pages, categories, or author from search results in WordPress

By default, the search functionality in WordPress shows all record types and pages in the results. You may want to remove pages, categories, taxonomies, or posts by a specific author from your search. To do this, we need to fix the main is_search() query on the pre_get_posts hook. Let’s see some examples. How to hide…
Read more