How to prevent duplicated URLs caused by multiple ItemIDs

ItemID is one of the most important and problematic part of Joomla! and SEF, check out the OSTraining tutorial for more info about what is ItemID

1. Problems

There are 2 main reasons of creating duplicated URLs from multiple ItemIDs:

1. One article/category pointed in 2 different menus
2. Some modules, not coded well, do not add the correct ItemID to non-SEF links, they add the ItemID of active page to links.

2. Case study

The following image is an example of the #1 problem. As you can see, on our live site we use 2 different menus to show the company's articles, Main Menu and Company Menu.


As per result, SEF components will generate 2 different records with the same SEF URL but different Real URL:


3. Solutions

Solution for problem #1
Since AceSEF 1.5.4, we have implemented a smooth solution for this problem. You will have the oppurtunity to add an AceSEF URL to any menu item:

multiple-itemids-03 multiple-itemids-04

So a second URL for that article won't be created. It's recommended to lock that SEF URL from AceSEF=>URLs page because it's ID is stored in menu item.

Solution for problem #1 & #2
We have added 3 new options to solve this issue in a smart way.
The first option is AceSEF=>Configuration=>URLs=>Ignore Multiple ItemIDs, the second one is AceSEF=>Configuration=>URLs=>Find ItemID smartly and the third one is AceSEF=>Extensions=>Your Extension (Content)=>Use Smart ItemID. The first and the second options are global but the second one is extension based which means it's not available for all extensions.

config-smart-itemid params-smart-itemid

These 3 options will try to eliminate Duplicated URLs caused by multiple ItemID in an automatic way and creating just one URL/record for you. Of course, there is no 100% guaranteed automatic solution.

NOTE: Some components (like Zoo and Wrapper) recognize the page just using ItemID and do not add any other variable to the URL. For example in Zoo, applications added to menus are separated just by the ItemID and the other part of the URL is the same. In such a case you should turn off the AceSEF=>Configuration=>URLs=>Find ItemID smartly option.