Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

block google robots for URLS containing a certain word

Tags:

robots.txt

my client has a load of pages which they dont want indexed by google - they are all called

http://example.com/page-xxx

so they are /page-123 or /page-2 or /page-25 etc

Is there a way to stop google indexing any page that starts with /page-xxx using robots.txt

would something ike this work?

Disallow: /page-*

Thanks

like image 220
JorgeLuisBorges Avatar asked Jul 28 '11 13:07

JorgeLuisBorges


People also ask

How do I block Google bots?

Prevent specific articles on your site from appearing in Google News and Google Search, block access to Googlebot using the following meta tag: <meta name="googlebot" content="noindex, nofollow">.

How do you prevent search crawlers from crawling a URL?

You can prevent a page or other resource from appearing in Google Search by including a noindex meta tag or header in the HTTP response. When Googlebot next crawls that page and sees the tag or header, Google will drop that page entirely from Google Search results, regardless of whether other sites link to it.

How do you stop robots from looking at things on a website?

To prevent specific articles on your site from being indexed by all robots, use the following meta tag: <meta name="robots" content="noindex, nofollow">. To prevent robots from crawling images on a specific article, use the following meta tag: <meta name="robots" content="noimageindex">.

How do I remove robots.txt from a website?

The robots file is located in the root directory of your web hosting folder, this normally can be found in /public_html/ and you should be able to edit or delete this file using: FTP using a FTP client such as FileZilla or WinSCP.


2 Answers

In the first place, a line that says Disallow: /post-* isn't going to do anything to prevent crawling of pages of the form "/page-xxx". Did you mean to put "page" in your Disallow line, rather than "post"?

Disallow says, in essence, "disallow urls that start with this text". So your example line will disallow any url that starts with "/post-". (That is, the file is in the root directory and its name starts with "post-".) The asterisk in this case is superfluous, as it's implied.

Your question is unclear as to where the pages are. If they're all in the root directory, then a simple Disallow: /page- will work. If they're scattered across directories in many different places, then things are a bit more difficult.

As @user728345 pointed out, the easiest way (from a robots.txt standpoint) to handle this is to gather all of the pages you don't want crawled into one directory, and disallow access to that. But I understand if you can't move all those pages.

For Googlebot specifically, and other bots that support the same wildcard semantics (there are a surprising number of them, including mine), the following should work:

Disallow: /*page-

That will match anything that contains "page-" anywhere. However, that will also block something like "/test/thispage-123.html". If you want to prevent that, then I think (I'm not sure, as I haven't tried it) that this will work:

Disallow: */page-

like image 55
Jim Mischel Avatar answered Sep 28 '22 11:09

Jim Mischel


It looks like the * will work as a Google wild card, so your answer will keep Google from crawling, however wildcards are not supported by other spiders. You can search google for robot.txt wildcards for more info. I would see http://seogadget.co.uk/wildcards-in-robots-txt/ for more information.

Then I pulled this from Google's documentation:

Pattern matching

Googlebot (but not all search engines) respects some pattern matching.

To match a sequence of characters, use an asterisk (*). For instance, to block access to all >subdirectories that begin with private:

User-agent: Googlebot Disallow: /private*/

To block access to all URLs that include a question mark (?) (more specifically, any URL that begins with your domain name, followed by any string, followed by a question mark, followed by any string):

User-agent: Googlebot Disallow: /*?

To specify matching the end of a URL, use $. For instance, to block any URLs that end with .xls:

User-agent: Googlebot Disallow: /*.xls$

You can use this pattern matching in combination with the Allow directive. For instance, if a ? indicates a session ID, you may want to exclude all URLs that contain them to ensure Googlebot doesn't crawl duplicate pages. But URLs that end with a ? may be the version of the page that you do want included. For this situation, you can set your robots.txt file as follows:

User-agent: * Allow: /?$ Disallow: /?

The Disallow: / *? directive will block any URL that includes a ? (more specifically, it will block any URL that begins with your domain name, followed by any string, followed by a question mark, followed by any string).

The Allow: /*?$ directive will allow any URL that ends in a ? (more specifically, it will allow any URL that begins with your domain name, followed by a string, followed by a ?, with no characters after the ?).

Save your robots.txt file by downloading the file or copying the contents to a text file and saving as robots.txt. Save the file to the highest-level directory of your site. The robots.txt file must reside in the root of the domain and must be named "robots.txt". A robots.txt file located in a subdirectory isn't valid, as bots only check for this file in the root of the domain. For instance, http://www.example.com/robots.txt is a valid location, but http://www.example.com/mysite/robots.txt is not.

Note: From what I read this is a Google only approach. Officially there is no Wildcard allowed in robots.txt for disallow.

like image 35
Travis Pessetto Avatar answered Sep 28 '22 13:09

Travis Pessetto