11

I just found out a major SEO issue and while I have solved it for the time being; I am trying to figure out why it may have occurred in the first place and if there was mistake or is it something to do with Joomla itself. First the issue:

When I crawled a site with Moz, it showed four duplicate content for the homepage which was unexpected. So for example for the homepage http://www.foo.com it was showing duplicate content URLs like the following:

foo.com/2-uncategorised/1-offers (canonical = foo.com/2-uncategorised/1-offers)
foo.com/2-uncategorised/2-enquiry (canonical = foo.com/2-uncategorised/2-enquiry) 
foo.com/2-uncategorised/3-products (canonical = foo.com/2-uncategorised/3-products) 

And all of these links were simply loading the homepage content yet the meta details were from the article. This obviously indicated that Joomla was auto creating the links and I found the same for the 4 links. The link in the article were like this:

index.php?option=com_content&view=article&id=1&catid=2&Itemid=1
index.php?option=com_content&view=article&id=2&catid=2&Itemid=1
index.php?option=com_content&view=article&id=3&catid=2&Itemid=1

The Itemid = 1 corresponds to the homepage menu item which explains why the homepage was loading. I tried recreating the issue but could not. According to the folks who added the content, here is the steps they did when creating those articles and links within it:

  1. Create Articles
  2. Add link to other articles using 'Article' tab in the content editor.
  3. Create menu item to the articles

So I was wondering if there is something obviously wrong here. I am confused because there is over 100 articles yet this happened only in about 5 articles. Thanks.

15

TOC of this answer:

  1. Content under same Item Id
  2. How Duplicate content is created / Dynamic Pages / URLs
  3. SEO perspective
  4. Dealing with Duplicate content in Joomla
  5. References and links

1. Why the Articles are being displayed under the same itemid

First of all, this is not the problem why you are getting duplicate urls. The articles are using the home-page's item id, because there is no other item id assigned for them.

Read more regarding this:

And this one might also be insightful:



2. How "duplicate content" is created / Dynamic pages/ URLs

This is actually a standard behavior for dynamic websites that generate their pages by using URL parameters to construct Query Strings in the form of Field-Value pairs. The server/application will receive the query, process it and return the associative content to the browser.

To understand better this, you might want to disable SEF Urls in a Joomla website and study a little the Non-SEF Url of a page:

Example:

index.php?option=com_content&view=article&id=3&catid=9&Itemid=101

Splitting the above query into fields-value pairs we see:

  • option = com_content
  • view = article
  • id = 3
  • catid = 9
  • Itemid = 101

These are fields-values that Joomla understands and will try to return the following content as:

It will query in the com_content component and use an article view to display the content item (article) with id 3, of the category id 9, using the Menu Item with id 101.


Many URL variations for 1 page

However the same article can be displayed with even more fields-values combination:

Some possible combinations could be:

  • index.php?option=com_content&view=article&id=3&catid=9
  • index.php?option=com_content&view=article&id=3&Itemid=101
  • index.php?option=com_content&view=article&id=3&Itemid=102
  • index.php?option=com_content&view=article&id=3&Itemid=103
  • index.php?option=com_content&view=article&id=3
  • index.php?option=com_content&view=article&id=3&lang=en
  • index.php?option=com_content&view=article&id=3&catid=9&Itemid=101&lang=en

  • index.php?option=com_content&view=article&id=3&catid=9&Itemid=101&lang=en&print=1

  • index.php?option=com_content&view=article&id=3&catid=9&Itemid=101&lang=en&tmpl=component

As you can see, all the above are requesting the same data from the system, which is the article with id = 3. These leads to the fact that the same content/page can be accessed through various different urls and in some cases can be displayed in different layouts.

*With SEF URLs enabled in Joomla, the above potentially could translate to more than 1 SEF URL for the same article/content.



3. The SEO perspective

Modern Search Engines and Google particularly, are aware of this behavior. Usually they will try their best, to index and keep in their search results the most suitable URL for a page. In addition, Google has revealed that there is no actual "penalty" for duplicated content due to this.

However, the main issue in the case that the same content/page has been indexed more than once, is that you possibly are loosing page ranking and the best possible SEO performance, because page ranking will be split into more than 1 page instead of 1.

With this in mind, it is wise to deal with this, instead of letting the Search Engines indexing urls while trying to guess if different urls show the same or different content.
Moreover, controlling your urls and what SE should index, can help you produce a better user experience as whole, since site users will find the same page under 1 only standard url, and it can produce a more solid structure for a website and its management.



4. How to deal with Duplicate Content

  • Using Canonical URLs for your pages.
    Canonical Urls will instruct the search engine about which is supposed the right url of a page that they should crawl and keep in their index.

  • Using INDEX/NOINDEX, FOLLOW/NOFOLLOW metadata. Using such metadata in your pages, will instruct search engines if you want them to index or not the content of a page and to follow or not the links found on it.

  • Using 301 redirects / htaccess.
    You can redirect all other URLs to the one that you want at the main. This can be achieved with SEF Extensions or htaccess. Both provide great power, however htaccess has great flexibility considering the ability to use regular expressions for all kinds of redirections/ or rewrites using the mod_rewrite. Regarding J Extensions, when the need arises, I usually use sh404SEF.

    Update: As @Neil Robertson noted on the comments: one important redirection is from non-www version of the website to the www version of the website or vice versa. Add this to the .htaccess file for non-www to www redirection.

        ### Redirect non-www to www
        RewriteCond %{HTTP_HOST} !^www\. [NC]
        RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
        ### Redirect non-www to www - END 
    
  • Using Google Webmasters Tools
    Google Webmasters Tools have options to adjust how the crawler should behave with your URL parameters.

  • Using Sitemaps
    Submit to the Search Engines your site's URL structure.

  • Using Robots.txt file
    Google and other major SE are respecting your Robots.txt. You can instruct them to not crawl specific directories/url paths.

All the above options can be combined in order to produce the desired outcome.

*Like everywhere, so in Joomla, good planning and content organization always help to reach to a better result. Especially with Joomla, this also involves a clean content categorization and menu items structure.



5. References and links

Joomla SEO Extensions

Usually in Joomla if you want to deal with this efficiently you would end up installing a 3rd party SEO-SEF extension.



More reading:

  • 1
    one of the best answer on this forum :) very much helpful. thanks @FFrewin – Joomler Jun 27 '16 at 7:17
  • 1
    This is an excellent answer. :) For completeness, it might be good to add some information on redirecting the non-www version of the website to the www version of the website or vice versa. This is often forgotten about but is probably the main cause of duplicate content on all websites (not just Joomla). – Neil Robertson Mar 20 '17 at 23:44
  • It looks like the new router will finally see the light of day in Joomla 3.8 and this will help simplify urls without needing a third party extension. – Neil Robertson Sep 11 '17 at 23:44
  • 1
    @NeilRobertson: I still think there is still room for improvement and more work needed on this for a complete and efficient solution for managing SEF URLs / duplicates on Joomla. – FFrewin Oct 5 '17 at 8:53
  • @FFrewin I agree. It looks like some third party extensions may also have to be updated to take advantage of the new router. – Neil Robertson Oct 5 '17 at 9:02
0

If I have multiple menu items going to the same content, I use System Links/Menu Item Alias located in the Menu Manager. Here's an old article about it; but the method still exists today: https://magazine.joomla.org/issues/issue-apr-2016/item/2997-avoid-duplicate-content-with-a-menu-item-alias

@Neil, I agree 100% about non-www vs www content being read as duplicates. Here is the code that forces www to be non-www. Place it in your htaccess file. Also, it adds the https security protocol too. This code isn't the only method, but it's what I use successfully on many sites.

RewriteCond %{HTTP_HOST} ^www.yourwebsite.com [NC]
RewriteRule ^(.*)$ https://yourwebsite.com/$1 [L,R=301]

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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