17

My home page could be potentially linked as:

http://example.com
http://example.com/
http://example.com/?ref=1
http://example.com/index.html
http://example.com/index.html?ref=2

(the same page is served for all those URLs)

I am thinking about defining a canonical URL to make sure Google doesn't consider those urls to be different pages:

<link rel="canonical" href="/" /> (relative)
<link rel="canonical" href="http://example.com/" /> (trailing slash)
<link rel="canonical" href="http://example.com" /> (no trailing slash)

Which one should be used? I would just slap / but messing with canonical seems like a scary business so I wanted double check first.

Is it a good idea at all for defining a canonical URL for a home page?

2

1 Answer 1

17

According to RFC 2616 (HTTP/1.1), section 3.2.2, the URLs http://www.example.com and http://www.example.com/ are equivalent, and HTTP clients must normalize the former to the latter before sending the request to the server:

"If the abs_path is not present in the URL, it MUST be given as "/" when used as a Request-URI for a resource (section 5.1.2)."

where section 5.1.2 says:

"Note that the absolute path cannot be empty; if none is present in the original URI, it MUST be given as "/" (the server root)."

RFC 3986 (URI Generic Syntax) confirms this in section 6.2.3, Scheme-Based Normalization, noting that:

"For example, because the "http" scheme makes use of an authority component, has a default port of "80", and defines an empty path to be equivalent to "/", the following four URIs are equivalent:

    http://example.com
    http://example.com/
    http://example.com:/
    http://example.com:80/

In general, a URI that uses the generic syntax for authority with an empty path should be normalized to a path of "/". Likewise, an explicit ":port", for which the port is empty or the default for the scheme, is equivalent to one where the port and its ":" delimiter are elided and thus should be removed by scheme-based normalization. For example, the second URI above is the normal form for the "http" scheme."

Technically, the normalization described in RFC 3986 section 6.2.3 is optional for implementations that e.g. merely index URLs, although RFC 2616 makes it mandatory for clients wishing to actually send HTTP requests. Still, given that the standard permits such normalization, and given that search engines generally don't want to deliberately add duplicates to their index, one can be reasonably sure that just about all search engines will be normalizing all those URLs to be the same.

Thus, it makes no difference to either browsers or search engines whether you use http://www.example.com or http://www.example.com/. They're equivalent.

1
  • 9
    http://www.example.com and http://www.example.com/ may be equivalent, but http://www.example.com/ is the canonical one because it is what URIs must be normalized to. So I would use it in the canonical meta tag. Jul 22, 2013 at 14:15

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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