?
avatar eSilverStrike
eSilverStrike
24 Oct 2017

Steps to reproduce the issue

The site domain (or canonical domain) setting of the Joomla System SEF plugin is confusing and does not work properly.

Canonical URLs are supposed to point to the preferred URL of the page. They consolidate link signals for the duplicate or similar content. It helps search engines to be able to consolidate the information they have for the individual URLs (such as links to them) on a single, preferred URL. All this setting does is point to the same URL the visitor is accessing using the domain specified in the setting. It doesn't address the multiple URLs that the same content can be accessed on the website.

For example in the current version of Joomla with the SEF plugin enabled, the same article can be accessed via

https://www.yoursite.com/index.php?option=com_content&view=article&id=123:article-alias&catid=38:category-alias

or by the menu item

https://www.yoursite.com/category-alias/article-alias

yet by using the site domain setting this one page depending on how you access it will have different canonical URLs

For more information on Canonical URLs and how they should work see:
https://support.google.com/webmasters/answer/139066?hl=en

Expected result

A content page (article, tags, contact, category, or any other component) on Joomla should only have one canonical URL no matter what URL is used to access it.

Actual result

See above

Additional comments

Related Issues
#18410
#18318

avatar eSilverStrike eSilverStrike - open - 24 Oct 2017
avatar joomla-cms-bot joomla-cms-bot - change - 24 Oct 2017
Labels Added: ?
avatar joomla-cms-bot joomla-cms-bot - labeled - 24 Oct 2017
avatar eSilverStrike eSilverStrike - change - 24 Oct 2017
Title
System - SEF Plugin Site Domain
System - SEF Plugin Site Domain Setting does not work properly
avatar eSilverStrike eSilverStrike - edited - 24 Oct 2017
avatar franz-wohlkoenig franz-wohlkoenig - change - 24 Oct 2017
Category Feature Request Plugins
avatar ggppdk
ggppdk - comment - 24 Oct 2017

The sef plugin does not know anything about the canonical URL of the pages of every component

That setting is only for correcting the domain in the canonical URL

  • it is not for adding a correct canonical URL

Every component, (usually every individual view of the component) needs to add the appropriate canonical URL, that is the case the multiple URLs exist for the page

Now if the component view neglected adding the canonical URL
then the SEF plugin (while trying to correct the domain) will use the current url

The above is not the fault of the SEF plugin, it is the faullt of every component that did not add the appropriate canonical URL (if this was needed)

so there is nothing to fix in the SEF plugin

avatar eSilverStrike
eSilverStrike - comment - 24 Oct 2017

That is part of the problem the tool tip for the setting does not explain it properly. I know many many people who use this feature putting their actual domain in the Domain setting thinking this is how to get canonical links working and in reality it creates more of a mess for SEO.

If this setting can't create the correct canonical for pages as described above in my initial issue description then it should not create any canonical urls for the page as they may be wrong. Plus the page may not even need a canonical.

That setting is only for correcting the domain in the canonical URL

As you said f the component supplies a canonical then it should correct the domain, if one is not supplied the plugin shouldn't add one as it may be incorrect. This is what needs to be fixed. (along with a better tooltip description)

avatar ggppdk
ggppdk - comment - 24 Oct 2017

If this setting can't create the correct canonical for pages as described above in my initial issue description then it should not create any canonical urls for the page as they may be wrong.

It does not (should not) create more problems if (in the case of missing rel-canonical) you add current URL as rel-canonical, since if rel-canonical url is missing the current is implied anyway

To repeat myself it is not the fault of the SEF plugin that a proper rel-canonical URL was not added by a component

That is part of the problem the tool tip for the setting does not explain it properly. I know many many people who use this feature putting their actual domain in the Domain setting thinking this is how to get canonical links working

Then the description should be corrected

avatar franz-wohlkoenig franz-wohlkoenig - change - 25 Oct 2017
Status New Discussion
avatar franz-wohlkoenig franz-wohlkoenig - change - 25 Oct 2017
Status Discussion Information Required
avatar eSilverStrike
eSilverStrike - comment - 25 Oct 2017

It does not (should not) create more problems if you add current URL as rel-canonical

It does as it sends false signals to search engines about the same page content with multiple URLs. I have seen it first hand with weird URLs being used in the search results for pages that have a menu structure setup for them.

To repeat myself it is not the fault of the SEF plugin that a proper rel-canonical URL was not added by a component

I realize that but, it is the fault of the SEF plugin when it creates a new one for a page that may be incorrect. If the component has not created a canonical url for the page then the SEF plugin should not be adding one based just on the current URL.

avatar ggppdk
ggppdk - comment - 25 Oct 2017

It does as it sends false signals to search engines about the same page content with multiple URLs. ...

same thing happens if you do not add it

(you opened an issue of this, about article view and i made a PR, saying yourself and i agree that not adding it , the multiple pages are considered different by search engines)

Again i say
there is nothing magical in the SEF plugin to magically know the rel canonical of all views of any core or 3rd party component !

  • If the component it did not add a rel-canonical, then the current url is correctly assumed to be the canonical url of itself

and the SEF plugin correctly add the domain + current URL as rel canonical

If current url is not unique, why did the component not add the rel-canonical ?
the bug / issue is at the code of the component 's view

avatar ggppdk
ggppdk - comment - 25 Oct 2017

Correct order of things

Component view adds the rel-canonical if needed
SEF plugin modifies the domain of the rel-canonical, if you have configured the domain parameter

avatar eSilverStrike
eSilverStrike - comment - 25 Oct 2017

I think we agree on most things regarding the canonical URLs.

Were we disagree is if the SEF plugin should add in missing canonical URLs to try to cover up the components bug/issue of not including one. From my understanding from reading on the web, its better not to list a canonical at all if you are unsure if a canonical should be used or what it should be.

This is a couple of quotes from Google Webmaster Blog which I think help illustrate my point: https://webmasters.googleblog.com/2013/04/5-common-mistakes-with-relcanonical.html

Specify no more than one rel=canonical for a page. When more than one is specified, all rel=canonicals will be ignored.

Another issue is when pages include multiple rel=canonical links to different URLs. This happens frequently in conjunction with SEO plugins that often insert a default rel=canonical link, possibly unbeknownst to the webmaster who installed the plugin. In cases of multiple declarations of rel=canonical, Google will likely ignore all the rel=canonical hints. Any benefit that a legitimate rel=canonical might have offered will be lost.

Also if for example the page doesn't have a canonical already from its component and it has sorting options which adds variables to the url depending on how it is sorted. Currently the SEF plugin would go ahead and add different canonicals for the same page but for different sort options.

https://webmasters.googleblog.com/2009/02/specify-your-canonical.html

Is it okay if the canonical is not an exact duplicate of the content? We allow slight differences, e.g., in the sort order of a table of products.

avatar Vitaliy214
Vitaliy214 - comment - 20 Dec 2017

Hello
System - SEF plugins, shows the wrong tag Joomla! 3.8.3
?start=30" rel="canonical" /> .html?hitcount=011111" rel="canonical" />
My decision may not be entirely correct but works better
Insert code /libraries/src/Document/Renderer/Html/HeadRenderer.php line 89 +
`// Tag canonical
$base = $document->getBase();

	if (!empty($base))
	{
		$buffer .= $tab . '<link rel="canonical" href="' . $base . '" />' . $lnEnd;
	}

`

avatar eSilverStrike
eSilverStrike - comment - 20 Dec 2017

@Vitaliy214 The SEF plugin canonical links is broken. Others may not say so but the help tooltip for it is VERY misleading. Most webmasters (including myself at one point) use it thinking to create proper Canonical links of pages for their current site. In reality it does not. All it does is replace the current domain with the one specified under "Site Domain". The "Site Domain" option is suppose to be used to point the current domain to a new domain if a webmaster ever decided to change domains or protocols.

This "Site Domain" does double damage as the current URL of the page may not even be the correct Canonical of the page. As we know most pages of Joomla can be visited using different URLs. This means that the SEF plugin creates multiple canonicals for the same page which is a no no in the eyes of Google.

An attempt is being made to fix this with feature requests #18410 (tag canonicals) and #18318 (article canonicals). In reality the component responsible for the URL is the only thing that can create the correct Canonical so the component itself needs to be modified to support canonicals. It is not possible for Joomla itself to create the correct ones for other components as at some point it will only be guessing.

In my opinion the "Site Domain" option which creates canonical links needs to be removed from the Joomla SEF plugin. The components themselves needs to handle it. Plus when you move domains you shouldn't be using canonical links pointing to the new domain. What needs to be done is a redirect pointing the old domain to the new domain. (which can be done using htaccess or webconfig with IIS)

avatar csthomas
csthomas - comment - 20 Dec 2017

There is a few issues with duplicated links:

  1. Always generate correct one.
  2. Fix invalid ones by adding canonical url.

I created PR #19099, which fixes the first point.

avatar franz-wohlkoenig
franz-wohlkoenig - comment - 26 Dec 2017

@eSilverStrike can you please test #19099 which need a second successfully Test?

avatar franz-wohlkoenig franz-wohlkoenig - change - 26 Dec 2017
Status Information Required Discussion
avatar brianteeman
brianteeman - comment - 5 Jan 2018

I can't comment about any translations but it is absolutely clear in the label and the description that this is for the domain and not for a url

If your site can be accessed through more than one domain enter the preferred (sometimes referred to as canonical) domain here.
Note: https://example.com and https://www.example.com are different domains.

avatar brianteeman brianteeman - change - 5 Jan 2018
Status Discussion Closed
Closed_Date 0000-00-00 00:00:00 2018-01-05 22:35:45
Closed_By brianteeman
avatar brianteeman brianteeman - close - 5 Jan 2018
avatar eSilverStrike
eSilverStrike - comment - 6 Jan 2018

If this feature is kept the description at least needs to be expanded on as many webmasters expect the sef plugin to return the correct canonical for a page even if they enter their current domain. In a large number of cases it does not because the component/joomla itself does not. You then have a page that can be accessed by multiple urls (even under the same domain) and it returns multiple different canonicals. It should only return 1 url no matter how the page is accessed there by making this feature broken.

Besides Google states to use the Google Search Console to set your preferred domain or better yet a 301 redirect.

https://support.google.com/webmasters/answer/44231?hl=en

I can't find anywhere that states it is a good idea to use Canonical links this way to specify a preferred domain.

https://support.google.com/webmasters/answer/139066?hl=en

avatar brianteeman
brianteeman - comment - 6 Jan 2018

the description is clear -this is for the domain not the url

avatar eSilverStrike
eSilverStrike - comment - 6 Jan 2018

???? the domain is part of the URL. Canoncial links are for URLS not just domains.

Canonical links are not suppose to be used this way to set a preferred domain. Incorrect canonical links are return. How is any of this good and benefits a Joomla website?

I know many webmasters who have used this expecting correct canonical links returned.

IMO this feature needs to be dropped as this is not the way to set a preferred domain.

If others disagree then the feature should be updated to only modify any existing canonical links already created and not add new ones as these new canonical links have a good chance of being incorrect as the SEF plugin has no idea what the real canonical link should be for pages generated by components and other parts of Joomla.

Even the field name is misleading. If someone just looks at the SEF plugin and not the tooltip they will think they have to enter there site domain for some reason. New users may not even realize their is a tooltip as no indication of a tooltip exists. If this feature has to be kept for some reason that no one has explained yet here then at least update the field name and tooltip with a description like the one below (which still needs tweaking):

Preferred Site Domain

If your site can be accessed through more than one domain enter the preferred (sometimes referred to as canonical) domain here. When this field is filled out the SEF plugin will add a Canonical link to the page (if one does not exist) or update the existing one with the preferred domain. If the SEF plugin needs to add the Canonical link then it will use the current URL being accessed by the visitor for the page as the Canonical link. If the page can be accessed by multiple URLs then the incorrect Canonical link may be created by the SEF plugin.
Note: https://example.com and https://www.example.com are different domains.

Add a Comment

Login with GitHub to post a comment