Merge pull request #334 from odoo/12.0-seo-fgi
[IMP] v12 update of SEO tutorial
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 8.5 KiB After Width: | Height: | Size: 6.9 KiB |
Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 7.6 KiB |
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 46 KiB |
@ -13,22 +13,20 @@ Some examples of SEO rules: your web pages should load faster, your page
|
|||||||
should have one and only one title ``<h1>``, your website should have a
|
should have one and only one title ``<h1>``, your website should have a
|
||||||
``/sitemap.xml`` file, etc.
|
``/sitemap.xml`` file, etc.
|
||||||
|
|
||||||
The Odoo Website Builder is probably the most SEO-ready CMS out there.
|
To guarantee Odoo Website and Odoo
|
||||||
We consider SEO a top priority. To guarantee Odoo Website and Odoo
|
|
||||||
eCommerce users have a great SEO, Odoo abstracts all the technical
|
eCommerce users have a great SEO, Odoo abstracts all the technical
|
||||||
complexities of SEO and handles everything for you, in the best possible
|
complexities of SEO and handles everything for you, in the best possible
|
||||||
way.
|
way.
|
||||||
|
|
||||||
Page speed
|
Page Speed
|
||||||
==========
|
==========
|
||||||
|
|
||||||
Introduction
|
Introduction
|
||||||
------------
|
------------
|
||||||
|
|
||||||
The time to load a page is an important criteria for Google. A faster
|
The time to load a page is an important criteria for search engines. A faster
|
||||||
website not only improves your visitor's experience, but Google gives
|
website not only improves your visitor's experience, but gives
|
||||||
you a better page ranking if your page loads faster than your
|
you a better page ranking. Some studies have shown that, if you divide the time to
|
||||||
competitors. Some studies have shown that, if you divide the time to
|
|
||||||
load your pages by two (e.g. 2 seconds instead of 4 seconds), the
|
load your pages by two (e.g. 2 seconds instead of 4 seconds), the
|
||||||
visitor abandonment rate is also divided by two. (25% to 12.5%). One
|
visitor abandonment rate is also divided by two. (25% to 12.5%). One
|
||||||
extra second to load a page could `cost $1.6b to Amazon in
|
extra second to load a page could `cost $1.6b to Amazon in
|
||||||
@ -45,11 +43,11 @@ your website ranks using these two tools:
|
|||||||
|
|
||||||
- `Pingdom Website Speed Test <http://tools.pingdom.com/fpt/>`__
|
- `Pingdom Website Speed Test <http://tools.pingdom.com/fpt/>`__
|
||||||
|
|
||||||
Static resources: CSS
|
Static Resources: CSS
|
||||||
---------------------
|
---------------------
|
||||||
|
|
||||||
All CSS files are pre-processed, concatenated, minified, compressed and
|
All CSS files are pre-processed, concatenated, minified, compressed and
|
||||||
cached (server side and browser side). The result:
|
cached (server-side and browser-side). The result:
|
||||||
|
|
||||||
- only one CSS file request is needed to load a page
|
- only one CSS file request is needed to load a page
|
||||||
|
|
||||||
@ -59,13 +57,29 @@ cached (server side and browser side). The result:
|
|||||||
|
|
||||||
- this CSS file is optimized to be small
|
- this CSS file is optimized to be small
|
||||||
|
|
||||||
**Pre-processed:** The CSS framework used by Odoo 9 is bootstrap 3.
|
**Pre-processed:** The CSS framework used by Odoo is Bootstrap.
|
||||||
Although a theme might use another framework, most of `Odoo
|
Although a theme might use another framework, most of `Odoo
|
||||||
themes <https://www.odoo.com/apps/themes>`__ extend and customize
|
themes <https://www.odoo.com/apps/themes>`__ extend and customize
|
||||||
bootstrap directly. Since Odoo supports Less and Sass, so you can modify
|
Bootstrap directly. Since Odoo supports Less and Sass, you can modify
|
||||||
CSS rules, instead of overwriting them through extra CSS lines,
|
CSS rules instead of overwriting them through extra CSS lines,
|
||||||
resulting in a smaller file.
|
resulting in a smaller file.
|
||||||
|
|
||||||
|
**Concatenated:** every module or library you might use in Odoo has its
|
||||||
|
own set of CSS, Less or Sass files (eCommerce, blogs, themes, etc.). Having
|
||||||
|
several CSS files is great for the modularity, but not good for the
|
||||||
|
performance because most browsers can only perform 6 requests in
|
||||||
|
parallel resulting in lots of files loaded in series. The
|
||||||
|
latency time to transfer a file is usually much longer than the actual
|
||||||
|
data transfer time, for small files like .JS and .CSS. Thus, the time to
|
||||||
|
load CSS resources depends more on the number of requests to be done
|
||||||
|
than the actual file size.
|
||||||
|
|
||||||
|
To address this issue, all CSS / Less / Sass files are concatenated into
|
||||||
|
a single .CSS file to send to the browser. So a visitor has **only one
|
||||||
|
.CSS file to load** per page, which is particularly efficient. As the
|
||||||
|
CSS is shared amongst all pages, when the visitor clicks on another
|
||||||
|
page, the browser does not even have to load a new CSS file!
|
||||||
|
|
||||||
================================= =============================================
|
================================= =============================================
|
||||||
**Both files in the <head>** **What the visitor gets (only one file)**
|
**Both files in the <head>** **What the visitor gets (only one file)**
|
||||||
================================= =============================================
|
================================= =============================================
|
||||||
@ -81,22 +95,6 @@ resulting in a smaller file.
|
|||||||
}
|
}
|
||||||
================================= =============================================
|
================================= =============================================
|
||||||
|
|
||||||
**Concatenated:** every module or library you might use in Odoo has its
|
|
||||||
own set of CSS, Less or Sass files (eCommerce, blog, theme, etc.) Having
|
|
||||||
several CSS files is great for the modularity, but not good for the
|
|
||||||
performance because most browsers can only perform 6 requests in
|
|
||||||
parallel resulting in lots of files that are loaded in series. The
|
|
||||||
latency time to transfer a file is usually much longer than the actual
|
|
||||||
data transfer time, for small files like .JS and .CSS. Thus, the time to
|
|
||||||
load CSS resources depends more on the number of requests to be done
|
|
||||||
than the actual file size.
|
|
||||||
|
|
||||||
To address this issue, all CSS / Less / Sass files are concatenated into
|
|
||||||
a single .CSS file to send to the browser. So a visitor has **only one
|
|
||||||
.CSS file to load** per page, which is particularly efficient. As the
|
|
||||||
CSS is shared amongst all pages, when the visitor clicks on another
|
|
||||||
page, the browser does not even have to load a new CSS file!
|
|
||||||
|
|
||||||
The CSS sent by Odoo includes all CSS / Less / Sass of all pages /
|
The CSS sent by Odoo includes all CSS / Less / Sass of all pages /
|
||||||
modules. By doing this, additional page views from the same visitor will
|
modules. By doing this, additional page views from the same visitor will
|
||||||
not have to load CSS files at all. But some modules might include huge
|
not have to load CSS files at all. But some modules might include huge
|
||||||
@ -108,8 +106,8 @@ the visitor logs in and accesses the backend (/web).
|
|||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
If the CSS file is very big, Odoo will split it into two smaller
|
If the CSS file is very big, Odoo will split it into two smaller
|
||||||
files to avoid the 4095 selectors limit per sheet of Internet Explorer
|
files to avoid the 4095 selectors limit per sheet of Internet Explorer.
|
||||||
8. But most themes fit below this limit.
|
But most themes fit below this limit.
|
||||||
|
|
||||||
**Minified:** After being pre-processed and concatenated, the resulting
|
**Minified:** After being pre-processed and concatenated, the resulting
|
||||||
CSS is minified to reduce its size.
|
CSS is minified to reduce its size.
|
||||||
@ -126,40 +124,35 @@ CSS is minified to reduce its size.
|
|||||||
The final result is then compressed, before being delivered to the
|
The final result is then compressed, before being delivered to the
|
||||||
browser.
|
browser.
|
||||||
|
|
||||||
Then, a cached version is stored on the server side (so we do not have
|
Then, a cached version is stored server-side (so we do not have
|
||||||
to pre-process, concatenate, minify at every request) and the browser
|
to pre-process, concatenate, minify at every request) and browser-side
|
||||||
side (so the same visitor will load the CSS only once for all pages he
|
(so the same visitor will load the CSS only once for all pages they
|
||||||
will visit).
|
visit).
|
||||||
|
|
||||||
.. note::
|
Static Resources: Javascript
|
||||||
If you are in debug mode, the CSS resources are neither
|
|
||||||
concatenated nor minified. That way, it's easier to debug (but it's much
|
|
||||||
slower)
|
|
||||||
|
|
||||||
Static resources: Javascript
|
|
||||||
----------------------------
|
----------------------------
|
||||||
|
|
||||||
As with CSS resources, Javascript resources are also concatenated,
|
As with CSS resources, Javascript resources are also concatenated,
|
||||||
minified, compressed and cached (server side and browser side).
|
minified, compressed and cached (server-side and browser-side).
|
||||||
|
|
||||||
Odoo creates three Javascript bundles:
|
Odoo creates three Javascript bundles:
|
||||||
|
|
||||||
- One for all pages of the website (including code for parallax
|
- One for all pages of the website (including code for parallax
|
||||||
effects, form validation, …)
|
effects, form validation, etc.)
|
||||||
|
|
||||||
- One for common Javascript code shared among frontend and backend
|
- One for common Javascript code shared among frontend and backend
|
||||||
(bootstrap)
|
(Bootstrap)
|
||||||
|
|
||||||
- One for backend specific Javascript code (Odoo Web Client interface
|
- One for backend specific Javascript code (Odoo Web Client interface
|
||||||
for your employees using Odoo)
|
for your employees using Odoo)
|
||||||
|
|
||||||
Most visitors to your website will only need the first two bundles,
|
Most visitors of your website will only need the first two bundles,
|
||||||
resulting in a maximum of two Javascript files to load to render one
|
resulting in a maximum of two Javascript files to load to render one
|
||||||
page. As these files are shared across all pages, further clicks by the
|
page. As these files are shared across all pages, further clicks by the
|
||||||
same visitor will not load any other Javascript resource.
|
same visitor will not load any other Javascript resource.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
If you work in debug mode, the CSS and javascript are neither
|
If you work in debug mode, the CSS and Javascript are neither
|
||||||
concatenated, nor minified. Thus, it's much slower. But it allows you to
|
concatenated, nor minified. Thus, it's much slower. But it allows you to
|
||||||
easily debug with the Chrome debugger as CSS and Javascript resources
|
easily debug with the Chrome debugger as CSS and Javascript resources
|
||||||
are not transformed from their original versions.
|
are not transformed from their original versions.
|
||||||
@ -167,9 +160,9 @@ same visitor will not load any other Javascript resource.
|
|||||||
Images
|
Images
|
||||||
------
|
------
|
||||||
|
|
||||||
When you upload new images using the website builder, Odoo automatically
|
When you upload new images, Odoo automatically
|
||||||
compresses them to reduce their sizes. (lossless compression for .PNG
|
compresses them to reduce their sizes (lossless compression for .PNG
|
||||||
and .GIF and lossy compression for .JPG)
|
and .GIF and lossy compression for .JPG).
|
||||||
|
|
||||||
From the upload button, you have the option to keep the original image
|
From the upload button, you have the option to keep the original image
|
||||||
unmodified if you prefer to optimize the quality of the image rather
|
unmodified if you prefer to optimize the quality of the image rather
|
||||||
@ -236,7 +229,7 @@ server (NGINX or Apache).
|
|||||||
|
|
||||||
The Odoo Website builder has been optimized to guarantee clean and short
|
The Odoo Website builder has been optimized to guarantee clean and short
|
||||||
HTML code. Building blocks have been developed to produce clean HTML
|
HTML code. Building blocks have been developed to produce clean HTML
|
||||||
code, usually using bootstrap and the HTML editor.
|
code, usually using Bootstrap and the HTML editor.
|
||||||
|
|
||||||
As an example, if you use the color picker to change the color of a
|
As an example, if you use the color picker to change the color of a
|
||||||
paragraph to the primary color of your website, Odoo will produce the
|
paragraph to the primary color of your website, Odoo will produce the
|
||||||
@ -252,21 +245,17 @@ code:
|
|||||||
Responsive Design
|
Responsive Design
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
As of 2015, websites that are not mobile-friendly are negatively
|
Websites that are not mobile-friendly are negatively
|
||||||
impacted in Google Page ranking. All Odoo themes rely on Bootstrap 3 to
|
impacted in search engine rankings. All Odoo themes rely on Bootstrap to
|
||||||
render efficiently according to the device: desktop, tablet or mobile
|
render efficiently according to the device: desktop, tablet or mobile.
|
||||||
phone.
|
|
||||||
|
|
||||||
.. image:: media/seo08.png
|
.. image:: media/seo08.png
|
||||||
:align: center
|
:align: center
|
||||||
|
|
||||||
As all Odoo modules share the same technology, absolutely all pages in
|
As all Odoo modules share the same technology, absolutely all pages in
|
||||||
your website are mobile friendly. (as opposed to traditional CMS which
|
your website are mobile friendly.
|
||||||
have mobile friendly themes, but some specific modules or pages are not
|
|
||||||
designed to be mobile friendly as they all have their own CSS
|
|
||||||
frameworks)
|
|
||||||
|
|
||||||
Browser caching
|
Browser Caching
|
||||||
---------------
|
---------------
|
||||||
|
|
||||||
Javascript, images and CSS resources have an URL that changes
|
Javascript, images and CSS resources have an URL that changes
|
||||||
@ -287,19 +276,17 @@ Scalability
|
|||||||
-----------
|
-----------
|
||||||
|
|
||||||
In addition to being fast, Odoo is also more scalable than traditional
|
In addition to being fast, Odoo is also more scalable than traditional
|
||||||
CMS' and eCommerce (Drupal, Wordpress, Magento, Prestashop). The
|
CMS and eCommerce (Drupal, Wordpress, Magento, Prestashop). The
|
||||||
following link provides an analysis of the major open source CMS and
|
following link provides an analysis of the major open source CMS and
|
||||||
eCommerce compared to Odoo when it comes to high query volumes.
|
eCommerce compared to Odoo when it comes to high query volumes:
|
||||||
|
`*https://www.odoo.com/slides/slide/197* <https://www.odoo.com/slides/slide/odoo-cms-performance-comparison-and-optimisation-197>`__
|
||||||
|
|
||||||
- `*https://www.odoo.com/slides/slide/197* <https://www.odoo.com/slides/slide/odoo-cms-performance-comparison-and-optimisation-197>`__
|
Here is the slide that summarizes the scalability of Odoo Website & eCommerce.
|
||||||
|
|
||||||
Here is the slide that summarizes the scalability of Odoo eCommerce and
|
|
||||||
Odoo CMS. (based on Odoo version 8, Odoo 9 is even faster)
|
|
||||||
|
|
||||||
.. image:: media/seo09.png
|
.. image:: media/seo09.png
|
||||||
:align: center
|
:align: center
|
||||||
|
|
||||||
URLs handling
|
URLs Handling
|
||||||
=============
|
=============
|
||||||
|
|
||||||
URLs Structure
|
URLs Structure
|
||||||
@ -307,7 +294,7 @@ URLs Structure
|
|||||||
|
|
||||||
A typical Odoo URL will look like this:
|
A typical Odoo URL will look like this:
|
||||||
|
|
||||||
https://www.mysite.com/fr\_FR/shop/product/my-great-product-31
|
- https://www.mysite.com/fr\_FR/shop/product/my-great-product-31
|
||||||
|
|
||||||
With the following components:
|
With the following components:
|
||||||
|
|
||||||
@ -315,23 +302,21 @@ With the following components:
|
|||||||
|
|
||||||
- **www.mysite.com** = your domain name
|
- **www.mysite.com** = your domain name
|
||||||
|
|
||||||
- **/fr\_FR** = the language of the page. This part of the URL is
|
- **/fr\_FR** = page language. This part of the URL is
|
||||||
removed if the visitor browses the main language of the website
|
removed if the visitor browses the main language of the website
|
||||||
(english by default, but you can set another language as the main
|
Thus, the main version of this page is:
|
||||||
one). Thus, the English version of this page is:
|
|
||||||
https://www.mysite.com/shop/product/my-great-product-31
|
https://www.mysite.com/shop/product/my-great-product-31
|
||||||
|
|
||||||
- **/shop/product** = every module defines its own namespace (/shop is
|
- **/shop/product** = every module defines its own namespace (/shop is
|
||||||
for the catalog of the eCommerce module, /shop/product is for a
|
for the catalog of the eCommerce module, /shop/product is for a
|
||||||
product page). This name can not be customized to avoid conflicts
|
product page).
|
||||||
in different URLs.
|
|
||||||
|
|
||||||
- **my-great-product** = by default, this is the slugified title of the
|
- **my-great-product** = by default, this is the slugified title of the
|
||||||
product this page refers to. But you can customize it for SEO
|
product this page refers to. But you can customize it for SEO
|
||||||
purposes. A product named "Pain carré" will be slugified to
|
purposes. A product named "Pain carré" will be slugified to
|
||||||
"pain-carre". Depending on the namespace, this could be different
|
"pain-carre". Depending on the namespace, this could be different
|
||||||
objects (blog post, page title, forum post, forum comment,
|
objects (blog post, page title, forum post, forum comment,
|
||||||
product category, etc)
|
product category, etc.).
|
||||||
|
|
||||||
- **-31** = the unique ID of the product
|
- **-31** = the unique ID of the product
|
||||||
|
|
||||||
@ -345,10 +330,6 @@ an example, the following URLs all do a 301 redirect to the above URL:
|
|||||||
- http://mysite.com/fr\_FR/shop/product/other-product-name-31 (old
|
- http://mysite.com/fr\_FR/shop/product/other-product-name-31 (old
|
||||||
product name)
|
product name)
|
||||||
|
|
||||||
This could be useful to easily get shorter version of an URL and handle
|
|
||||||
efficiently 301 redirects when the name of your product changes over
|
|
||||||
time.
|
|
||||||
|
|
||||||
Some URLs have several dynamic parts, like this one (a blog category and
|
Some URLs have several dynamic parts, like this one (a blog category and
|
||||||
a post):
|
a post):
|
||||||
|
|
||||||
@ -356,9 +337,9 @@ a post):
|
|||||||
|
|
||||||
In the above example:
|
In the above example:
|
||||||
|
|
||||||
- Company News: is the title of the blog
|
- *Company News* is the title of the blog
|
||||||
|
|
||||||
- The Odoo Story: is the title of a specific blog post
|
- *The Odoo Story* is the title of a specific blog post
|
||||||
|
|
||||||
When an Odoo page has a pager, the page number is set directly in the
|
When an Odoo page has a pager, the page number is set directly in the
|
||||||
URL (does not have a GET argument). This allows every page to be indexed
|
URL (does not have a GET argument). This allows every page to be indexed
|
||||||
@ -366,11 +347,6 @@ by search engines. Example:
|
|||||||
|
|
||||||
- https://www.odoo.com/blog/page/3
|
- https://www.odoo.com/blog/page/3
|
||||||
|
|
||||||
.. note::
|
|
||||||
Having the language code as fr\_FR is not perfect in terms of SEO.
|
|
||||||
Although most search engines treat now "\_" as a word separator, it has
|
|
||||||
not always been the case. We plan to improve that for Odoo 10.
|
|
||||||
|
|
||||||
Changes in URLs & Titles
|
Changes in URLs & Titles
|
||||||
------------------------
|
------------------------
|
||||||
|
|
||||||
@ -392,32 +368,30 @@ Will automatically redirect to :
|
|||||||
|
|
||||||
In short, just change the title of a blog post or the name of a product,
|
In short, just change the title of a blog post or the name of a product,
|
||||||
and the changes will apply automatically everywhere in your website. The
|
and the changes will apply automatically everywhere in your website. The
|
||||||
old link still works for links coming from external website. (with a 301
|
old link still works for links coming from external websites, with a 301
|
||||||
redirect to not lose the SEO link juice)
|
redirect to not lose the SEO link juice.
|
||||||
|
|
||||||
HTTPS
|
HTTPS
|
||||||
-----
|
-----
|
||||||
|
|
||||||
As of August 2014, Google started to add a ranking boost to secure
|
Search engines boost ranking of secure HTTPS/SSL websites.
|
||||||
HTTPS/SSL websites. So, by default all Odoo Online instances are fully
|
So, by default all Odoo Online instances are fully
|
||||||
based on HTTPS. If the visitor accesses your website through a non HTTPS
|
based on HTTPS. If the visitor accesses your website through a non HTTPS
|
||||||
url, it gets a 301 redirect to its HTTPS equivalent.
|
url, it gets a 301 redirect to its HTTPS equivalent.
|
||||||
|
|
||||||
Links: nofollow strategy
|
Links: Nofollow Strategy
|
||||||
------------------------
|
------------------------
|
||||||
|
|
||||||
Having website that links to your own page plays an important role on
|
The more a page is linked from external and quality websites,
|
||||||
how your page ranks in the different search engines. The more your page
|
the better it is for your SEO.
|
||||||
is linked from external and quality websites, the better is it for your
|
|
||||||
SEO.
|
|
||||||
|
|
||||||
Odoo follows the following strategies to manage links:
|
Here are Odoo strategies to manage links:
|
||||||
|
|
||||||
- Every link you create manually when creating page in Odoo is
|
- Every link you add to your website is
|
||||||
"dofollow", which means that this link will contribute to the SEO
|
"dofollow", which means that this link will contribute to the SEO
|
||||||
Juice for the linked page.
|
Juice for the linked page.
|
||||||
|
|
||||||
- Every link created by a contributor (forum post, blog comment, ...)
|
- Every link posted by a contributor (forum post, blog comment, etc.)
|
||||||
that links to your own website is "dofollow" too.
|
that links to your own website is "dofollow" too.
|
||||||
|
|
||||||
- But every link posted by a contributor that links to an external
|
- But every link posted by a contributor that links to an external
|
||||||
@ -426,19 +400,19 @@ Odoo follows the following strategies to manage links:
|
|||||||
which have a bad reputation.
|
which have a bad reputation.
|
||||||
|
|
||||||
- Note that, when using the forum, contributors having a lot of Karma
|
- Note that, when using the forum, contributors having a lot of Karma
|
||||||
can be trusted. In such case, their links will not have a
|
can be trusted. In such case, their links will not have any
|
||||||
``rel="nofollow"`` attribute.
|
``rel="nofollow"`` attribute.
|
||||||
|
|
||||||
Multi-language support
|
Multi-Language Support
|
||||||
======================
|
======================
|
||||||
|
|
||||||
Multi-language URLs
|
Multi-Language URLs
|
||||||
-------------------
|
-------------------
|
||||||
|
|
||||||
If you run a website in multiple languages, the same content will be
|
If you run a website in multiple languages, the same content will be
|
||||||
available in different URLs, depending on the language used:
|
available in different URLs, depending on the language used:
|
||||||
|
|
||||||
- https://www.mywebsite.com/shop/product/my-product-1 (English version = default)
|
- https://www.mywebsite.com/shop/product/my-product-1 (main language, English here)
|
||||||
|
|
||||||
- https://www.mywebsite.com\/fr\_FR/shop/product/mon-produit-1 (French version)
|
- https://www.mywebsite.com\/fr\_FR/shop/product/mon-produit-1 (French version)
|
||||||
|
|
||||||
@ -446,38 +420,36 @@ In this example, fr\_FR is the language of the page. You can even have
|
|||||||
several variations of the same language: pt\_BR (Portuguese from Brazil)
|
several variations of the same language: pt\_BR (Portuguese from Brazil)
|
||||||
, pt\_PT (Portuguese from Portugal).
|
, pt\_PT (Portuguese from Portugal).
|
||||||
|
|
||||||
Language annotation
|
Language Annotation
|
||||||
-------------------
|
-------------------
|
||||||
|
|
||||||
To tell Google that the second URL is the French translation of the
|
To let search engines know that the second URL is the French translation of the
|
||||||
first URL, Odoo will add an HTML link element in the header. In the HTML
|
first URL, Odoo will add an HTML link element in the header. In the HTML
|
||||||
<head> section of the English version, Odoo automatically adds a link
|
<head> section of the main version, Odoo automatically adds a link
|
||||||
element pointing to the other versions of that webpage;
|
element pointing to the translated versions of that webpage;
|
||||||
|
|
||||||
- <link rel="alternate" hreflang="fr"
|
- <link rel="alternate" hreflang="fr"
|
||||||
href="https://www.mywebsite.com\/fr\_FR/shop/product/mon-produit-1"/>
|
href="https://www.mywebsite.com\/fr\_FR/shop/product/mon-produit-1"/>
|
||||||
|
|
||||||
With this approach:
|
With this approach:
|
||||||
|
|
||||||
- Google knows the different translated versions of your page and will
|
- Search engines will redirect to th right language according to the
|
||||||
propose the right one according to the language of the visitor
|
visitor language.
|
||||||
searching on Google
|
|
||||||
|
|
||||||
- You do not get penalized by Google if your page is not translated
|
- You do not get penalized by search engines if your page is not translated
|
||||||
yet, since it is not a duplicated content, but a different
|
yet. Indeed, it's not a duplicated content, but a different
|
||||||
version of the same content.
|
version of the same content.
|
||||||
|
|
||||||
Language detection
|
Language Detection
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
When a visitor lands for the first time at your website (e.g.
|
When a visitor lands for the first time on your website (e.g.
|
||||||
yourwebsite.com/shop), his may automatically be redirected to a
|
yourwebsite.com/shop), they may automatically be redirected to a
|
||||||
translated version according to his browser language preference: (e.g.
|
translated version according to their browser language preference: (e.g.
|
||||||
yourwebsite.com/fr\_FR/shop).
|
yourwebsite.com/fr\_FR/shop).
|
||||||
|
|
||||||
Odoo redirects visitors to their prefered language only the first time
|
Next time, it keeps a cookie of the current language to
|
||||||
visitors land at your website. After that, it keeps a cookie of the
|
avoid any redirection.
|
||||||
current language to avoid any redirection.
|
|
||||||
|
|
||||||
To force a visitor to stick to the default language, you can use the
|
To force a visitor to stick to the default language, you can use the
|
||||||
code of the default language in your link, example:
|
code of the default language in your link, example:
|
||||||
@ -494,38 +466,25 @@ Titles, Keywords and Description
|
|||||||
Every web page should define the ``<title>``, ``<description>`` and ``<keywords>``
|
Every web page should define the ``<title>``, ``<description>`` and ``<keywords>``
|
||||||
meta data. These information elements are used by search engines to rank
|
meta data. These information elements are used by search engines to rank
|
||||||
and categorize your website according to a specific search query. So, it
|
and categorize your website according to a specific search query. So, it
|
||||||
is important to have titles and keywords in line with what people search
|
is important to have titles and keywords in line with what people seek.
|
||||||
in Google.
|
|
||||||
|
|
||||||
In order to write quality meta tags, that will boost traffic to your
|
In order to write quality content and boost your traffic, Odoo provides
|
||||||
website, Odoo provides a **Promote** tool, in the top bar of the website
|
a keyword finder. For each keyword, you see how it is used through the content
|
||||||
builder. This tool will contact Google to give you information about
|
(H1, H2, page title, page description, page content) and what are the related
|
||||||
your keywords and do the matching with titles and contents in your page.
|
searches in Google. The more keywords are used the better.
|
||||||
|
|
||||||
.. image:: media/seo10.png
|
.. image:: media/seo10.png
|
||||||
:align: center
|
:align: center
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
If your website is in multiple languages, you can use the Promote
|
If your website is in multiple languages, you can use the Promote
|
||||||
tool for every language of a single page;
|
tool for every language of a single page.
|
||||||
|
|
||||||
In terms of SEO, content is king. Thus, blogs play an important role in
|
|
||||||
your content strategy. In order to help you optimize all your blog post,
|
|
||||||
Odoo provides a page that allows you to quickly scan the meta tags of
|
|
||||||
all your blog posts.
|
|
||||||
|
|
||||||
.. image:: media/seo11.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
This /blog page renders differently for public visitors that are
|
|
||||||
not logged in as website administrator. They do not get the warnings and
|
|
||||||
keyword information.
|
|
||||||
|
|
||||||
Sitemap
|
Sitemap
|
||||||
-------
|
-------
|
||||||
|
|
||||||
Odoo will generate a ``/sitemap.xml`` file automatically for you. For
|
The sitemap points out pages to index to search engine robots.
|
||||||
|
Odoo generates a ``/sitemap.xml`` file automatically for you. For
|
||||||
performance reasons, this file is cached and updated every 12 hours.
|
performance reasons, this file is cached and updated every 12 hours.
|
||||||
|
|
||||||
By default, all URLs will be in a single ``/sitemap.xml`` file, but if you
|
By default, all URLs will be in a single ``/sitemap.xml`` file, but if you
|
||||||
@ -541,20 +500,20 @@ Every sitemap entry has 4 attributes that are computed automatically:
|
|||||||
- ``<lastmod>`` : last modification date of the resource, computed
|
- ``<lastmod>`` : last modification date of the resource, computed
|
||||||
automatically based on related object. For a page related to a
|
automatically based on related object. For a page related to a
|
||||||
product, this could be the last modification date of the product
|
product, this could be the last modification date of the product
|
||||||
or the page
|
or the page.
|
||||||
|
|
||||||
- ``<priority>`` : modules may implement their own priority algorithm based
|
- ``<priority>`` : modules may implement their own priority algorithm based
|
||||||
on their content (example: a forum might assign a priority based
|
on their content (example: a forum might assign a priority based
|
||||||
on the number of votes on a specific post). The priority of a
|
on the number of votes on a specific post). The priority of a
|
||||||
static page is defined by it's priority field, which is
|
static page is defined by it's priority field, which is
|
||||||
normalized. (16 is the default)
|
normalized (16 is the default).
|
||||||
|
|
||||||
Structured Data Markup
|
Structured Data Markup
|
||||||
----------------------
|
----------------------
|
||||||
|
|
||||||
Structured Data Markup is used to generate Rich Snippets in search
|
Structured Data Markup is used to generate Rich Snippets in search
|
||||||
engine results. It is a way for website owners to send structured data
|
engine results. It is a way for website owners to send structured data
|
||||||
to search engine robots; helping them to understand your content and
|
to search engine robots; helping them understand your content and
|
||||||
create well-presented search results.
|
create well-presented search results.
|
||||||
|
|
||||||
Google supports a number of rich snippets for content types, including:
|
Google supports a number of rich snippets for content types, including:
|
||||||
@ -572,18 +531,28 @@ and rating of a product:
|
|||||||
robots.txt
|
robots.txt
|
||||||
----------
|
----------
|
||||||
|
|
||||||
Odoo automatically creates a ``/robots.txt`` file for your website. Its
|
When indexing your website, search engines take a first look at the
|
||||||
content is:
|
general indexing rules of the a``/robots.txt`` file (allowed robots,
|
||||||
|
sitemap path, etc.). Odoo automatically creates it. Its content is:
|
||||||
|
|
||||||
User-agent: \*
|
User-agent: \*
|
||||||
|
|
||||||
Sitemap: https://www.odoo.com/sitemap.xml
|
Sitemap: https://www.odoo.com/sitemap.xml
|
||||||
|
|
||||||
Content is king
|
It means that all robots are allowed to index your website
|
||||||
|
and there is no other indexing rule than specified in the sitemap
|
||||||
|
to be found at following address.
|
||||||
|
|
||||||
|
You can customize the file *robots* in developer mode from
|
||||||
|
*Settings --> Technical --> User Interface --> Views*
|
||||||
|
(exclude robots, exclude some pages, redirect to a custom Sitemap).
|
||||||
|
Make the Model Data of the view *Non Updatable* to not reset the
|
||||||
|
file after system upgrades.
|
||||||
|
|
||||||
|
Content is King
|
||||||
===============
|
===============
|
||||||
|
|
||||||
When it comes to SEO, content is usually king. Odoo provides several
|
When it comes to SEO, content is usually king. Odoo provides several
|
||||||
modules to help you build your contents on your website:
|
modules to help you build your website contents:
|
||||||
|
|
||||||
- **Odoo Slides**: publish all your Powerpoint or PDF presentations.
|
- **Odoo Slides**: publish all your Powerpoint or PDF presentations.
|
||||||
Their content is automatically indexed on the web page. Example:
|
Their content is automatically indexed on the web page. Example:
|
||||||
@ -603,23 +572,41 @@ modules to help you build your contents on your website:
|
|||||||
.. note::
|
.. note::
|
||||||
The 404 page is a regular page, that you can edit like any other
|
The 404 page is a regular page, that you can edit like any other
|
||||||
page in Odoo. That way, you can build a great 404 page to redirect to
|
page in Odoo. That way, you can build a great 404 page to redirect to
|
||||||
the top content of your website.
|
the top content of your website when visitors get lost in invalid URLs.
|
||||||
|
|
||||||
Social Features
|
Social Features
|
||||||
===============
|
===============
|
||||||
|
|
||||||
Twitter Cards
|
Social media is built for mass sharing. If lots of people share your content
|
||||||
-------------
|
on social media, then it's likely more people will link to it,
|
||||||
|
and links are a huge factor for SEO ranking.
|
||||||
|
|
||||||
Odoo does not implement twitter cards yet. It will be done for the next
|
Odoo embeds several tools to share content through social media:
|
||||||
version.
|
|
||||||
|
|
||||||
Social Network
|
Social Network
|
||||||
--------------
|
--------------
|
||||||
|
|
||||||
Odoo allows to link all your social network accounts in your website.
|
Odoo allows to link all your social network accounts in your website footer.
|
||||||
All you have to do is to refer all your accounts in the **Settings** menu of
|
All you have to do is to refer all your accounts in your company settings.
|
||||||
the **Website Admin** application.
|
|
||||||
|
Social Share
|
||||||
|
------------
|
||||||
|
|
||||||
|
Drop the building block *Share* on any page you want your visitors to share.
|
||||||
|
|
||||||
|
Facebook Page
|
||||||
|
-------------
|
||||||
|
|
||||||
|
Drop the building block *Facebook Page* to display a widget of your Facebook
|
||||||
|
business page and encourage visitors to follow it.
|
||||||
|
You can display the timeline, the next events and the messages.
|
||||||
|
|
||||||
|
Twitter Scroller
|
||||||
|
----------------
|
||||||
|
|
||||||
|
Display the Twitter feeds with customer satifaction on your website.
|
||||||
|
THis will increase the number of tweets and shares.
|
||||||
|
|
||||||
|
|
||||||
Test Your Website
|
Test Your Website
|
||||||
=================
|
=================
|
||||||
|