1. You may run a site with two languages e.g. German/English with default German.
2. Now create a language neutral node.
3. German node, Canonical URL is de/content/foo.
4. Switch to English, Canonical URL is en/content/foo. BUG - this is duplicate content - Canonical URL must be [default site language]/content/foo e.g. de/content/foo.


Is this specific to Meta tags? This is the way canonical URLs are generated by Drupal core.


You can override the behavior:


I don't know, I only know - it is completly wrong as it does not solve the duplicate content issues it is made for.

True, but that doesn't have much to do with this module. The canonical tag is generated the same way whether this module is enabled, or not.

Status:Active» Closed (works as designed)

Status:Closed (works as designed)» Active

Bug is not fixed.

I'm currently launching a multi country site, and the issue is more complicated than just canonical.

Google actually understands a whole bunch of different things for different types of multilingual and multiregional websites.

See: http://googlewebmastercentral.blogspot.fr/2011/12/new-markup-for-multili...

http://support.google.com/webmasters/bin/answer.py?hl=en&answer=182192 <--- Bottom of page says canonical isn't for multilingual

Version:7.x-1.0-alpha5» 7.x-1.x-dev

Status:Active» Postponed (maintainer needs more info)

Metatag now works with Entity Translation, please review the current functionality and let me know if the problems persist.

This is still a problem with:

Entity Translation - 7.x-1.0-beta2+17-dev (2013-01-27)
Meta Tags - 7.x-1.0-beta4+17-dev (2012-12-04)

Please try the latest -dev release. Thanks.

According to Google, we shouldn't be using canonical on multilingual sites. Instead, the attribute should be rel="alternate" with the hreflang set to the language. So, if you have 5 languages, you'd have 5 links, one for each language. I've done that on my site by using the following code:

* Implements hook_html_head_alter().
function example_html_head_alter(&$elements) {
// Unset the Metatag canonical URL if it exists. See lb.cm/mcQ.
// Create a list of alternate urls, one for each language.
foreach (language_list() as $langcode => $language) {
// Make sure path is absolute and language is set.
$options = array('absolute' => TRUE, 'language' => $language);
// Generate the URL from the current q.
$href = url($_GET['q'], $options);
// Create a key in the elements array for this language.
$key = "example_rel_link_$langcode";
// Add the link using theme_html_tag.
$elements[$key] = array(
'#type' => 'html_tag',
'#tag' => 'link',
'#attributes' => array(
'rel' => 'alternate',
'hreflang' => $langcode,
'href' => $href,

More conversation:

Issue summary:View changes


Issue summary:View changes

This issue persists.

Status:Postponed (maintainer needs more info)» Active
Parent issue:» #2175021: META: Plan for Metatag 7.x-1.0-rc1 release

Lets try and fix this for 1.0-rc1.