This grrreat post from Danny Dover at Seomoz about search engine factors in 2009 gived me the force to write this post to the developers. Mostly i am writing in french on this site but today i will write in english. Here are 25 seo on-site best practices for coderz in 2009. Let me know your thoughts on this. Bouyya !
1. Title Tag
<title>Primary Keyword - Secondary Keywords | Brand</title>. Do not allow duplicate values for the title tag.
The closer the keyword is to the front of the title tag, the higher the ranking.
2. H1, H2, H3, etc.
Put the page title into a H1 tag, subheadings into H2 and H3 and so on. This is done in order to tell the search engines the semantic of the page content.
3. Meta keywords tag
Add a <meta name=”keywords” content=””> tag in the <head> part in order to add keywords for each crawlable pages. Do not allow duplicate values for the keyword tag.
4. Meta Description tag
Add a <meta name=”description” content=””> tag in the <head> part in order to add a description value for each crawlable pages. Do not allow duplicate values for the description tag.
5. Rel=”nofollow” on <a> attribute
For external links, links to profile pages, links to cart pages and links to login pages, add a rel=nofollow attribute on the link. This is done in order to block search engines from giving link juice.
i.e. <a href=”http://www.example.com/page.html” rel=”nofollow”>.
6. Meta Noindex, nofollow
Add in the <head> part a <meta name=”robots” content=”noindex, nofollow”> tag on pages that shouldn’t be indexed by the search engines. Those pages are:
· Login pages (i.e. http://www.example.com/login.jsp)
· Profile pages (i.e. http://www.example.com/profile.jsp | http://www.example.com/editprofile.jsp)
· Cart pages (i.e. http://www.example.com/cart.jsp | http://www.example.com/checkout.jsp | http://www.example.com/confirmation.jsp)
· Temporary offer pages (i.e. http://www.example.com/offers/offer1.jsp)
· Cross nav pages (i.e. http://www.example.com/product/makeup/details.jsp?crossnav=cat | http://www.example.com/offer/offerA/makeup-product-A.jsp)
7. Meta Noindex, Follow
Add in the <head> part a <meta name=”robots” content=”noindex, follow”> tag on pages that shouldn’t be indexed by the search engines but should rank links within those pages. Those pages are:
· Pagination pages over page 1 (i.e. http://www.example.com/product.jsp?page=2 | http://www.example.com/product.jsp?page=3 | http://www.example.com/products/2/ | http://www.example.com/products/3/)
· Search pages over page 1 (i.e. http://www.example.com/search.jsp?query=makeups&page=2&order=ASC | http://www.example.com/search.jsp?query=makeups&begin=10&last=20 | http://www.example.com/search/page2/)
8. Link Rel=”canonical” tag (how to do a rel=canonical on Google Blog)
For 2 Urls having the same content, make sure to add in the <head> the following code in order to tell the search engines the proper page to rank : <link rel=”canonical” href=”http://www.example.com/originalsource.html” />
I.e. The following page Urls display the same identical content:
· http://www.example.com/product.jsp?item=mascara&category=eyevbrow
· http://www.example.com/product.jsp?item=mascara&trackingid=1234&sessionid=5678
· http://www.example.com/product.jsp?item=mascara
· http://www.example.com/product.jsp?item=mascara&sort=ASC
· http://www.example.com/products/mascara/?jsessionid=12345
· http://www.example.com/products/mascara/
We must add a <link rel=”canonical”> to specify the preferred version. So in this example, we would add for those pages this tag in the head part: <link rel=”canonical” href=”http://www.example.com/products/mascara/” />
Other I.e.
· http://www.example.com
· http://www.example.com/
· http://www.example.com/index.html
· http://www.example.com/index.jsp
· http://www.example.com/index.jsp?lang=en
Rel=canonical value: <link rel=”canonical” href=”http://www.example.com/” />
The rel=canonical tag is important to be placed on those pages:
· Other urls for homepage
· Cross nav pages
· Search pages over page 1
· Pagination pages over page 1
9. Link Rel=”alternate” tag (how to do a rel=alternate on w3)
For Multilanguage sites, add a <link rel=alternate> tag in the <head> part in order to tell the search engines where are localized the urls for foreign languages.
I.e. <HEAD>
<TITLE>The manual in English</TITLE>
<LINK title=”The manual in Dutch”
type=”text/html”
rel=”alternate”
hreflang=”de”
href=”http://someplace.com/manual/dutch.html”>
<LINK lang=”fr” title=”La documentation en Français”
type=”text/html”
rel=”alternate”
hreflang=”fr”
href=”http://someplace.com/manual/french.html”>
</HEAD>
10. Absolute links
Instead of creating relative links <a href=“/page.html”>, always put the absolute path <a href=”http://www.domain.com/page.html”>.
11. Anchor text values
Always make sure that the anchor value of text links contains keyword-rich text.
I.e.
· <a>Eyebrow products</a> : GOOD
· <a>Click here for Eyebrow products</a> : POOR
· <a><img src=”button.gif”>Eyebrow products</a> : BAD
· <a>[more]</a> : BAD
· <a>[…]</a> : BAD
12. Flash links
Avoid using Flash links for navigation. If forced to use Flash for navigation, add related html links into the <noscript> tag.
I.e.
<script language=”javascript”>
AC_FL_RunContent(); //end AC code
</script>
<noscript>
<!– Html text content and text links here –>
</noscript>
13. Javascript links
Do not use Javascript links for navigational links to pages that we want to index/rank. Javascript links can be used for:
· Login pages
· Cart pages
· Print version pages
· Language switcher
· Country switcher
· DHTML tabs / menus (! make sure text content within DHTML is crawlable when desactivating Javascript+CSS in Firefox’s web developer toolbar.)
14. <a> title attribute
On each link pointing to an important page, add a keyword for the title attribute of the <a> that is slightly different from the value used for the anchor text. I.e. <a href=”http://www.example.com/product-makeups.html” title=”Shop Make-up products”>Makeup products</a>
15. <img> alt attribute
On each content-related image, add a keyword on the alt attribute of the <img>. I.e. <img src=”http://www.example.com/images/eyebrow-makeup-product-a.gif” alt=”Buy Product A” />
16. URL Filenames for multimedia content
Use keywords to name your multimedia files (images, videos, pdfs, etc.)
I.e.
· Image url: http://www.example.com/images/eyebrow-makeup-product-A_12345.jpg
· PDF url: http://www.example.com/pdf/eyebrow-makeup-instructions_12345.pdf
· Video url: http://www.example.com/video/eyebrow-makeup-video _12345.flv
17. Robots.txt file (see how to build a robots.txt file)
At the root of the site, add a file named robots.txt and on this file, block all non relevant directories.
I.e. http://www.example.com/robots.txt
User-agent: *
Disallow: /template/images
Disallow: /stats/
Disallow: /wp-admin/
Sitemap: http://www.example.com/sitemap.xml
Sitemap: http://www.example.com/videos/videos.xml
18. Sitemap.xml file (see how to build a sitemap.xml file and how to ping the search engines)
Create a xml sitemap at the root of the site that will contain all the site’s crawlable urls and ping the search engines in order to provide them with the site’s updates (Google, Yahoo, Bing, Ask). Xml sitemap structure should look like this:
I.e. http://www.example.com/sitemap.xml
<?xml version=”1.0″ encoding=”UTF-8″?>
<urlset xmlns=”http://www.sitemaps.org/schemas/sitemap/0.9″>
<url>
<loc>http://www.example.com/</loc>
<lastmod>2005-01-01</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
</urlset>
19. Products.xml file for Product sites (see how to build a products.xml file and how to submit the feed)
For a product site, somewhere on the site, create a xml sitemap file containing all the products. Also, this file should do a monthly submission to Google Product Base. Structure should look like this:
I.e. http://www.example.com/products/products.xml
<?xml version=”1.0″ encoding=”UTF-8″ ?>
<rdf:RDF xmlns:rdf=”http://www.w3.org/1999/02/22-rdf-syntax-ns#”
xmlns=”http://purl.org/rss/1.0/”
xmlns:g=”http://base.google.com/ns/1.0″>
<channel rdf:about=”http://www.example.com/RSS1.xml”>
<title>The name of your data feed.</title>
<description>A description of your content.</description>
<link>http://www.example.com</link>
<items>
<rdf:Seq>
<rdf:li resource=”http://www.example.com/item1-info-page.html”/>
<rdf:li resource=”http://www.example.com/item2-info-page.html”/>
</rdf:Seq>
</items>
</channel>
<item rdf:about=”http://www.example.com/item1-info-page.html”>
<title>Red wool sweater</title>
<g:brand>Acme</g:brand>
<g:condition>new</g:condition>
<description>Comfortable and soft, this sweater will keep you warm on those cold winter nights.</description>
<g:id>1</g:id>
<g:image_link>http://www.example.com/image1.jpg</g:image_link>
<link>http://www.example.com/item1-info-page.html</link>
<g:mpn>ABC123</g:mpn>
<g:price>25</g:price>
<g:product_type>Clothing & Accessories > Clothing > Outerwear > Sweaters</g:product_type>
<g:quantity>3</g:quantity>
<g:shipping>
<g:country>US</g:country>
<g:region>MA</g:region>
<g:service>Ground</g:service>
<g:price>5.95</g:price>
</g:shipping>
<g:tax>
<g:country>US</g:country>
<g:region>CA</g:region>
<g:rate>8.25</g:rate>
<g:tax_ship>y</g:tax_ship>
</g:tax>
<g:upc>0001230001230</g:upc>
<g:weight>0.1 lb</g:weight>
</item>
</rdf:RDF>
20. Videos.xml file for videos (see how to build a videos.xml file and how to submit the feed)
For a site that contains videos, somewhere on the site, create a xml sitemap file containing all the videos. Also, this file should do a monthly submission to Google. Structure should look like this:
I.e. http://www.example.com/videos/videos.xml
<urlset xmlns=”http://www.sitemaps.org/schemas/sitemap/0.9″
xmlns:video=”http://www.google.com/schemas/sitemap-video/1.1″>
<url>
<loc>http://www.example.com/videos/some_video_landing_page.html</loc>
<video:video>
<video:content_loc>http://www.example.com/video123.flv</video:content_loc>
<video:player_loc allow_embed=”yes”> http://www.example.com/videoplayer.swf?video=123
</video:player_loc>
<video:thumbnail_loc>http://www.example.com/thumbs/123.jpg</video:thumbnail_loc>
<video:title>Grilling steaks for summer</video:title>
<video:description>Get perfectly done steaks every time</video:description>
<video:rating>4.2</video:rating>
<video:view_count>12345</video:view_count>
<video:publication_date>2007-11-05T19:20:30+08:00.</video:publication_date>
<video:expiration_date>2009-11-05T19:20:30+08:00.</video:expiration_date>
<video:tag>steak</video:tag>
<video:tag>meat</video:tag>
<video:tag>summer</video:tag>
<video:category>Grilling</video:category>
<video:family_friendly>yes</video:family_friendly>
<video:expiration_date>2009-11-05T19:20:30+08:00</video:expiration_date>
<video:duration>600</video:duration>
</video:video>
</url>
</urlset>
21. Url Rewriting (What is Url rewriting)
For pages that we want to index/rank, create a url structure that doesn’t contains parameters. If possible, avoid using parameters by using keynames as primary keys.
I.e. Without IDs (BEST)
· Product detail page: http://www.example.com/product/blue-mascara/
· Product category page: http://www.example.com/category/mascara/
· Tag page: http://www.example.com/tag/mascara/
· Basic page: http://www.example.com/terms-and-conditions/
Other I.e. With IDs (OK)
· Product detail page: http://www.example.com/product/blue-mascara_12345/
· Product category page: http://www.example.com/category/mascara_12345/
· Tag page: http://www.example.com/tag/mascara_12345/
· Basic page: http://www.example.com/terms-and-conditions_12345/
Other I.e. Without Url Rewriting (BAD)
· Product detail page: http://www.example.com/productdetail.jsp?id=12345&cat=56789&cross=cat&lang=en
· Product category page: http://www.example.com/category.jsp?id=12345&order=asc&country=us
· Tag page: http://www.example.com/tag.jsp?tagname=mascara&id=12345&parent=56789
· Basic page: http://www.example.com/page.jsp?id=12345&parent=56789
22. 404 codes (how to do a 404 in JSP)
For broken pages, make sure that the broken url has a 404 code when doing a test with firefox’s live http headers. The broken page must not redirect to a /error.jsp page. The url should remain so that the search engines can know which url to identify as a deleted page.
23. 301 redirections (how to do a 301 in JSP)
All redirections on the site should have a 301 redirection code instead of a 302. Make sure that all redirections are done with a 301 code. 301 redirections should apply when:
· Renaming a product or category (i.e. http://www.example.com/products/mascara/ à http://www.example.com/products/mascaras/)
· Doing a campaign that contains vanity urls to landing pages (i.e. http://www.example.com/holiday/ à http://www.example.com/landing/holiday/)
· Deleting a product (i.e. http://www.example.com/products/old-mascara/ à http://www.example.com/category/mascara/)
· Deleting a category (i.e. http://www.example.com/category/mascara/ à http://www.example.com/category/all/)
24. User scenarios for International sites
For international sites, follow this table in order to define proper values for Urls, 301s, Cookies, Flags, GEO-IP and Browser language depending on the User scenario.
|
Scenario |
Url |
Actions |
Cookies |
|
User lands on the site for the fist time… |
|||
|
English User lands for first time on www.example.com and his IP address corresponds to an address from UK. Also, his browser language corresponds to English. |
www.example.com/ >>> www.example.com/uk-en/ |
- Do a GEO-IP Lookup and a Browser Lookup in order to Redirect user from www.example.com/ to www.example.com/uk-en/ - Define cookie country value on redirection: uk - Define cookie language value on redirection: en - Set flag to UK |
- country: uk - language: en |
|
English User lands for first time on www.example.com and his IP address corresponds to an address from CA. Also, his browser language corresponds to French. |
www.example.com/ >>> www.example.com/ca-fr/ |
- Do a GEO-IP Lookup and a Browser Lookup in order to Redirect user from www.example.com/ to www.example.com/ca-fr/ - Define cookie country value on redirection: ca - Define cookie language value on redirection: fr - Set flag to CA |
- country: ca - language: fr |
|
English User lands for first time on www.example.com and his IP address corresponds to an address from US. Also, his browser language corresponds to English. |
www.example.com/ >>> www.example.com/us-en/ |
- Do a GEO-IP Lookup and a Browser Lookup in order to Redirect user from www.example.com/ to www.example.com/us-en/ - Define cookie country value on redirection: us - Define cookie language value on redirection: en - Set flag to US |
- country: us - language: en |
|
English User lands for first time on www.example.com/olympic-medals/ and his IP address corresponds to an address from UK (or any other country). |
www.example.com/olympic-medals/ |
- Do not Redirect from GEO-Ip Lookup or browser Lookup - Define cookie country value: <set to nocountry> - Define cookie language value: en - Set flag to NO FLAG SELECTED |
- country: <set to nocountry> - language: en |
|
French User lands for first time on www.example.com/fr/ and his IP address corresponds to an address from CA. |
www.example.com/fr/ >>> www.example.com/ca-fr/ |
- Redirect from GEO-Ip Lookup - Define cookie country value: ca - Define cookie language value: fr - Set flag to CA |
- country: ca - language: fr |
|
User lands for first time on www.example.com/fr/ and his IP address corresponds to an address from CA. Browser language corresponds to English |
www.example.com/fr/ >>> www.example.com/ca-fr/ *FR value in the url overwrites browser language lookup |
- Redirect from GEO-Ip Lookup - Define cookie country value: ca - Define cookie language value: fr - Set flag to CA |
- country: ca - language: fr |
|
User lands for first time on www.example.com/ca-fr/olympiques-medailles/ and his IP address corresponds to an address from Canada but is browser language corresponds to English (not French) |
www.example.com/ca-fr/olympiques-medailles/ *No GEO-IP redirection to CA or Language redirection to EN because it is not the homepage and url value overwrites browser lookup |
- Do not Redirect from GEO-Ip Lookup or browser Lookup - Define cookie country value: ca - Define cookie language value: fr - Set flag to CA |
- country: ca - language: fr |
|
User lands on the site for the second time… |
|||
|
English User lands on www.example.com for the second time and his IP address corresponds to an address from UK. Also, his browser language corresponds to English. However, cookie country value is set to US and language is set to English. |
www.example.com >>> www.example.com/us-en/ *Country Cookie value US overwrites value from IP lookup |
- Do not Redirect from GEO-Ip Lookup or browser Lookup - Redirect user from www.example.com/ to www.example.com/us-en/ - Define cookie country value on redirection: us - Define cookie language value on redirection: en - Set flag to US
|
- country: us - language: en |
|
English User lands on www.example.com for the second time and his IP address corresponds to an address from UK. Also, his browser language corresponds to English. However, cookie country value is set to US and language is set to English. |
www.example.com >>> www.example.com/us-en/ |
- Do not Redirect from GEO-Ip Lookup or browser Lookup - Redirect user from www.example.com/ to www.example.com/us-en/ - Define cookie country value on redirection: us - Define cookie language value on redirection: en - Set flag to US
|
- country: us - language: en |
|
User lands on www.example.com/ca-en/ for the second time and his IP address corresponds to an address from UK (or any other country). Also, his browser language corresponds to English. His cookie country value is set to US (or any other country) and language is set to English. |
www.example.com/ca-en/ |
- Define cookie country value: ca - Define cookie language value: en - Set flag to CA
|
- country: ca - language: en |
|
User lands on www.example.com/olympic-medals for the second time and his IP address corresponds to an address from UK (or any other country). Also, his browser language corresponds to English. His cookie country value is set to US and language is set to English. |
www.example.com/olympic-medals/ >>> www.example.com/us-en/olympic-medals/ |
- Do not Redirect from GEO-Ip Lookup or browser Lookup - Redirect user from www.example.com/olympic-medals/ to www.example.com/us-en/olympic-medals/ - Define cookie country value: us - Define cookie language value: en - Set flag to US
|
- country: us - language: en |
|
User lands on www.example.com/olympic-medals for the second time and his IP address corresponds to an address from UK (or any other country). Also, his browser language corresponds to English. His cookie country value is set to <nocountry> and language is set to English. |
www.example.com/olympic-medals/ |
- Do not Redirect from GEO-Ip Lookup or browser Lookup - Define cookie country value: <set to nocountry> - Define cookie language value: en - Set flag to NO FLAG SELECTED |
- country: <set to nocountry> - language: en |
|
User lands on www.example.com/ca-en/olympic-medals for the second time and his IP address corresponds to an address from UK (or any other country). Also, his browser language corresponds to English. His cookie country value is set to <nocountry> and language is set to English. |
www.example.com/ca-en/olympic-medals/ |
- Do not Redirect from GEO-Ip Lookup or browser Lookup - Define cookie country value: ca - Define cookie language value: en - Set flag to CA |
- country: ca - language: en |
|
User lands on www.example.com/fr/ for the second time and his IP address corresponds to an address from UK (or any other country). Also, his browser language corresponds to English. However, cookie country value is set to FR and language is set to French. |
www.example.com/fr/ >>> www.example.com/fr-fr/ |
- Do not Redirect from GEO-Ip Lookup or browser Lookup - Define cookie country value: fr - Define cookie language value: fr - Set flag to FR |
- country: fr - language: fr |
|
User lands on www.example.com/fr/ for the second time and his IP address corresponds to an address from UK (or any other country). Also, his browser language corresponds to French. However, cookie country value is set to <nocountry> and cookie language is set to English. |
www.example.com/fr/ |
- Do not Redirect from GEO-Ip Lookup or browser Lookup - Define cookie country value: <set to nocountry> - Define cookie language value: fr - Set flag to NO FLAG SELECTED |
- country: <set to nocountry> - language: fr |
|
User lands on www.example.com/fr/ for the second time and his IP address corresponds to an address from UK (or any other country). Also, his browser language corresponds to English. However, cookie country value is set to <nocountry> and cookie language is set to French. |
www.example.com/fr/ |
- Do not Redirect from GEO-Ip Lookup or browser Lookup - Define cookie country value: <set to nocountry> - Define cookie language value: fr - Set flag to NO FLAG SELECTED |
- country: <set to nocountry> - language: fr |
|
User lands on www.example.com/fr/ for the second time and his IP address corresponds to an address from UK (or any other country). Also, his browser language corresponds to English. However, cookie country value is set to <nocountry> and cookie language is set to English. |
www.example.com/fr/ |
- Do not Redirect from GEO-Ip Lookup or browser Lookup - Define cookie country value: <set to nocountry> - Define cookie language value: fr - Set flag to NO FLAG SELECTED |
- country: <set to nocountry> - language: fr |
|
User lands on www.example.com/ for the second time and his IP address corresponds to an address from UK (or any other country). Also, his browser language corresponds to English. However, cookie country value is set to <nocountry> and cookie language is set to English. |
www.example.com/ |
- Do not Redirect from GEO-Ip Lookup or browser Lookup - Define cookie country value: <set to nocountry> - Define cookie language value: en - Set flag to NO FLAG SELECTED |
- country: <set to nocountry> - language: en |
|
User lands on www.example.com/ for the second time and his IP address corresponds to an address from UK (or any other country). Also, his browser language corresponds to English. However, cookie country value is set to <nocountry> and cookie language is set to French. |
www.example.com/ >>> www.example.com/fr/ |
- Do not Redirect from GEO-Ip Lookup or browser Lookup - Redirect user from www.example.com/ to www.example.com/fr/ - Define cookie country value: <set to nocountry> - Define cookie language value: fr - Set flag to NO FLAG SELECTED |
- country: <set to nocountry> - language: fr |
|
User navigates on the site… |
|||
|
User is on www.example.com/ca-en/ and decides to go to the main site www.example.com because he don’t want to have country-specific info |
www.example.com/ca-en/ >>> www.example.com/ |
- Redirect user from www.example.com/ca-en/ to www.example.com/ - Define cookie country value on redirection: <set to nocountry> - Define cookie language value on redirection: en - Set flag to NO FLAG SELECTED |
- country: <set to nocountry> - language: en |
|
French user is on www.example.com/ca-fr/ and decides to go to the main site www.example.com/fr/ because he don’t want to have country-specific info |
www.example.com/ca-en/ >>> www.example.com/fr/ |
- Redirect user from www.example.com/ca-fr/ to www.example.com/fr/ - Define cookie country value on redirection: <set to nocountry> - Define cookie language value on redirection: fr - Set flag to NO FLAG SELECTED |
- country: <set to nocountry> - language: fr |
|
User is on www.example.com and decides to change language to French in the language switcher |
www.example.com/ >>> www.example.com/fr/ |
- Redirect user from www.example.com/ to www.example.com/fr/ - Define cookie country value on redirection: <set to nocountry> - Define cookie language value on redirection: fr - Set flag to NO FLAG SELECTED |
- country: <set to nocountry> - language: fr |
|
User is on www.example.com/fr/ and decides to change language to English in the language switcher |
www.example.com/fr/ >>> www.example.com/ |
- Redirect user from www.example.com/fr/ to www.example.com/ - Define cookie country value on redirection: <set to nocountry> - Define cookie language value on redirection: en - Set flag to NO FLAG SELECTED |
- country: <set to nocountry> - language: en |
|
User is on www.example.com/ and decides to change country to Canada in the country switcher. |
www.example.com/ >>> www.example.com/ca-en/ |
- Redirect user from www.example.com/ to www.example.com/ca-en/ - Define cookie country value on redirection: ca - Define cookie language value on redirection: en - Set flag to CA Flag |
- country: ca - language: en |
|
User is on www.example.com/fr/ and decides to change country to Canada in the country switcher. |
www.example.com/fr/ >>> www.example.com/ca-fr/ |
- Redirect user from www.example.com/fr/ to www.example.com/ca-fr/ - Define cookie country value on redirection: ca - Define cookie language value on redirection: fr - Set flag to CA Flag
|
- country: ca - language: fr |
|
User is in the UK… |
|||
|
English user from UK search for keyword “olympics” in Google.co.uk. |
www.example.com/uk-en/ |
- Define cookie country value: uk - Define cookie language value: en - Set flag to UK Flag |
- country: uk - language: en |
|
French user from UK search for keyword “olympiques” in Google.co.uk. |
www.example.com/uk-fr/ |
- Define cookie country value: uk - Define cookie language value: fr - Set flag to UK Flag |
- country: uk - language: fr |
|
User is on www.example.com/uk-en/ and decides to change language to French in the language switcher. |
www.example.com/uk-en/ >>> www.example.com/uk-fr/ |
- Redirect user from www.example.com/uk-en/ to www.example.com/uk-fr/ - Define cookie country value on redirection: uk - Define cookie language value on redirection: fr - Set flag to UK Flag |
- country: uk - language: fr |
|
User is on www.example.com/uk-en/ and decides to change country to Canada in the country switcher. |
www.example.com/uk-en/ >>> www.example.com/ca-en/ |
- Redirect user from www.example.com/uk-en/ to www.example.com/ca-en/ - Define cookie country value on redirection: ca - Define cookie language value on redirection: en - Set flag to CA Flag |
- country: ca - language: en |
|
User is on www.example.com/uk-en/ and decides to go to the main site www.vancouver.com |
www.example.com/uk-en/ >>> www.example.com/ |
- Redirect user from www.example.com/uk-en/ to www.example.com/ - Define cookie country value on redirection: <set to nocountry> - Define cookie language value on redirection: en - Set flag to NO FLAG SELECTED |
- country: <set to nocountry> - language: en |
|
French User from UK is on www.example.com/uk-fr/ and decides to go to the main site’s French version www.vancouver.com/fr/ |
www.example.com/uk-en/ >>> www.example.com/fr/ |
- Redirect user from www.example.com/uk-en/ to www.example.com/fr/ - Define cookie country value on redirection: <set to nocountry> - Define cookie language value on redirection: fr - Set flag to NO FLAG SELECTED |
- country: <set to nocountry> - language: fr |
|
User receives a link from a friend |
|||
|
English User from UK received www.example.com/uk-en/olympic-medals/ from a friend. User has no cookie values defined. |
www.example.com/uk-en/olympic-medals/ |
- Define cookie country value on redirection: UK - Define cookie language value on redirection: en - Set flag to UK |
- country: UK - language: en |
|
English User from Canada received www.example.com/uk-en/olympic-medals/ from a friend. User has no cookie values defined. |
www.example.com/uk-en/olympic-medals/ |
- Define cookie country value on redirection: UK - Define cookie language value on redirection: en - Set flag to UK |
- country: UK - language: en |
|
English User from Canada received www.example.com/ca-fr/olympiques-medailles/ from a friend (French page). User has no cookie values defined. |
www.example.com/ca-fr/olympiques-medailles/ |
- Define cookie country value on redirection: CA - Define cookie language value on redirection: FR - Set flag to CA |
- country: CA - language: FR |
Highlights for User Scenarios
· Values on url dominates; than comes cookie values; last is geo-ip and browser lookup values.
· For the homepage only (www.example.com or www.example.com/fr), if no country value is set, this value should be set to the user’s country based on a Geo-IP lookup.
· Browser language detection should only available strictly for homepage url www.example.com.
· If cookie country value is set, there’s no redirection based on a GEO-Ip lookup.
· The country value should change if the user selects a different flag in the country selector or by acceding a country specific url. (i.e. /uk-en/ sets cookie country value to UK)
· Selecting a country filter on medals or athletes pages should direct the user to the country specific URL (I.e. selecting CANADA from www.example.com/olympic-medals/ should go to www.example.com/ca-en/olympic-medals
· If a country value is set and a user tries to access another country by changing the url or the country in the switcher, the country value is changed.
· The language value should change if the user selects to change their language on the website between English and French or from acceding a specific url (i.e. /ca-fr/ sets cookie language value to FR (French)
· For browser languages other than French (i.e. Chinese), redirect to EN.
· We can influence but we do not have total control on which pages Google will show in the SERPs.
· From the site’s navigation, the site must allow the possibility to go on the main site www.example.com or www.example.com/fr/ (French version) without being redirected again. In other words, the site must allow the option of setting the country cookie value to <nocountry>.
25. Meta data scenarios for International sites
For international sites, follow this table in order to define proper values for Canonical tag, Meta Noindex/Nofollow, Meta Country/Meta Language and GWT Geotarget depending on the Url.
|
Page specific url |
Unique content ? |
Canonical |
Meta Noindex/Nofollow |
Meta country/language |
GWT GeoTarget |
|
www.example.com |
Yes |
n/a |
<META NAME=”ROBOTS” CONTENT=”INDEX,FOLLOW”> |
<meta http-equiv=”content-language” content=”en”> <meta name=”language” content=”English”> |
- In GWT, associate www.example.com/ to International users
|
|
www.example.com/en/ |
No (301 to /) |
<link rel=”canonical” href=”http://www.example.com/”> |
<META NAME=”ROBOTS” CONTENT=”NOINDEX,NOFOLLOW”> |
n/a |
n/a |
|
www.example.com/fr/ |
Yes |
n/a |
<META NAME=”ROBOTS” CONTENT=”INDEX,FOLLOW”> |
<meta http-equiv=”content-language” content=”fr”> <meta name=”language” content=”French”> |
- In GWT, associate www.example.com/fr/ to International users
|
|
www.example.com/olympic-medals/ |
Yes |
n/a |
<META NAME=”ROBOTS” CONTENT=”INDEX,FOLLOW”> |
<meta http-equiv=”content-language” content=”en”> <meta name=”language” content=”English”> |
n/a |
|
www.example.com/fr/olympic-medals |
Yes |
n/a |
<META NAME=”ROBOTS” CONTENT=”INDEX,FOLLOW”> |
<meta http-equiv=”content-language” content=”fr”> <meta name=”language” content=”French”> |
n/a |
|
www.example.com/fr-fr/ |
Yes |
n/a |
<META NAME=”ROBOTS” CONTENT=”INDEX,FOLLOW”> |
<META NAME=”geo.country” CONTENT=”FR”> <META NAME=”country” CONTENT=”France”> <meta http-equiv=”content-language” content=”fr”> <meta name=”language” content=”French”> |
- In GWT, associate www.example.com/fr-fr/ to users from France
|
|
www.example.com/us-en/ |
Yes |
n/a |
<META NAME=”ROBOTS” CONTENT=”INDEX,FOLLOW”> |
<META NAME=”geo.country” CONTENT=”EN”> <META NAME=”country” CONTENT=”United States”> <meta http-equiv=”content-language” content=”en”> <meta name=”language” content=”English”> |
- In GWT, associate www.example.com/us-en/ to users from United States
|
|
www.example.com/us-en/olympic-medals/ |
Yes |
n/a |
<META NAME=”ROBOTS” CONTENT=”INDEX,FOLLOW”> |
<META NAME=”geo.country” CONTENT=”EN”> <META NAME=”country” CONTENT=”United States”> <meta http-equiv=”content-language” content=”en”> <meta name=”language” content=”English”> |
n/a |
|
www.example.com/ca-en/ |
Yes |
n/a |
<META NAME=”ROBOTS” CONTENT=”INDEX,FOLLOW”> |
<META NAME=”geo.country” CONTENT=”EN”> <META NAME=”country” CONTENT=”Canada”> <meta http-equiv=”content-language” content=”en”> <meta name=”language” content=”English”> |
- In GWT, associate www.example.com/us-en/ to users from Canada
|
|
www.example.com/jp-en/ |
Yes |
n/a |
<META NAME=”ROBOTS” CONTENT=”INDEX,FOLLOW”> |
<META NAME=”geo.country” CONTENT=”JP”> <META NAME=”country” CONTENT=”Japan”> <meta http-equiv=”content-language” content=”en”> <meta name=”language” content=”English”> |
- In GWT, associate www.example.com/jp-en/ to users from Japan
|
|
www.example.com/ca-fr/ |
Yes |
n/a |
<META NAME=”ROBOTS” CONTENT=”INDEX,FOLLOW”> |
<META NAME=”geo.country” CONTENT=”CA”> <META NAME=”country” CONTENT=”Canada”> <meta http-equiv=”content-language” content=”fr”> <meta name=”language” content=”French”> |
- In GWT, associate www.example.com/ca-fr/ to users from Canada
|
|
www.example.com/jp-jp/ |
No (301 to /jp-en/) |
<link rel=”canonical” href=”http://www.example.com/jp-en/”> |
<META NAME=”ROBOTS” CONTENT=”NOINDEX,NOFOLLOW”> |
n/a |
n/a |
|
www.example.com/ca-en/olympic-athlete-john-smith/ |
No |
<link rel=”canonical” href=”www.example.com/olympic-athlete-john-smith/”> |
<META NAME=”ROBOTS” CONTENT=”NOINDEX,NOFOLLOW”> |
<meta http-equiv=”content-language” content=”en”> <meta name=”language” content=”English”> <META NAME=”geo.country” CONTENT=”CA”> <META NAME=”country” CONTENT=”Canada”> |
n/a |
|
www.example.com/olympic-athlete-john-smith/ |
Yes |
n/a |
<META NAME=”ROBOTS” CONTENT=”INDEX,FOLLOW”> |
<meta http-equiv=”content-language” content=”en”> <meta name=”language” content=”English”> |
n/a |
|
www.example.com/fr/termes-et-conditions |
Yes |
n/a |
<META NAME=”ROBOTS” CONTENT=”INDEX,FOLLOW”> |
<meta http-equiv=”content-language” content=”fr”> <meta name=”language” content=”French”> |
n/a |
|
www.example.com/ca-fr/termes-et-conditions |
No |
<link rel=”canonical” href=”www.example.com/fr/termes-et-conditions”> |
<META NAME=”ROBOTS” CONTENT=”NOINDEX,NOFOLLOW”> |
<meta http-equiv=”content-language” content=”fr”> <meta name=”language” content=”French”> <META NAME=”geo.country” CONTENT=”CA”> <META NAME=”country” CONTENT=”Canada”> |
n/a |
Highlights for Meta data scenarios
· Country specific pages with no unique content (i.e. /ca-fr/terms-and-conditions/) should have a <meta name=”robots” content=”noindex,nofollow”> and a <link rel=”canonical” href=”http://www.example.com/terms-and-conditions/” />
· Static links pointing to country-specific pages with unique content should be integrated somewhere on the site (i.e. html and xml sitemap)
· Country specific pages with unique content must have specific values for META Titles, META Keywords and META Description.
· We can influence but we do not have total control on which pages Google will show in the SERPs.
Im I missing something ?