Post by fresh_ » Tue Mar 28, 2017 3:57 pm


since one week I’m learning about opencart (v2.3.0.2) and installed the journey theme. All together I’m very satisfied with opencart, but the products have a big „duplicate content“ problem. By searching in the internet I could not find a good solution as well.

If this problem can not be fixed, it does not make sense for me to use opencart. So I want to know from the experienced opencard users how they handle that problem?

What I found is: ... =47&page=3 ... e-remover/
The last link only supports opencart (I use v2.3.0.2)

Thanks for your help,



Sat Mar 18, 2017 3:51 am

Post by angela » Tue Mar 28, 2017 11:18 pm

Almost every cart & CMS has this issue.

Opencart uses the canonical tag, so the duplicates shouldn't affect your rank, but this is definitely a design flaw.
If you go to a manufacturer page, hover over a link and youll see something like ?page=15 appended to the product URL. This is the source of your duplication.

It's an easy fix, but time consuming because manufacturers, categories and breadcrumbs all have this linking issue.
(Categories and manufacturer pages themselves, also have duplication)

Easiest way:
process of elimination.

404 any undesirable from your /product url structure. (How you do it, depends how your SEO url is structured)

How I do it:
if any URL has ? - 404.

I add my 404 check in catalog/controller/products/products.php

Then run something like Xenu linksleuth through it and it'll tell you where 404s are being linked internally. Target a section at a time.

You can also add this to robots.txt:

Code: Select all

User-agent: *
Disallow: /*?
Caveat: ?page=2 won't be indexed

Not all indexing bots obey wildcard robots.txt, Google has obeyed for a while.

Stuff like this is where your duplicates come from:

Code: Select all

			if (isset($this->request->get['filter'])) {
				$url .= '&filter=' . $this->request->get['filter'];

			if (isset($this->request->get['sort'])) {
				$url .= '&sort=' . $this->request->get['sort'];

			if (isset($this->request->get['order'])) {
				$url .= '&order=' . $this->request->get['order'];

			if (isset($this->request->get['limit'])) {
				$url .= '&limit=' . $this->request->get['limit'];
Find this code (and anything like it) for everything you want to remove and eliminate it. Back up before you do, test immediately after and make sure everything is working.

User avatar
New member


Fri Dec 02, 2016 2:14 am
Who is online

Users browsing this forum: OSWorX and 27 guests