Every product in your store can be reached at more than one web address. That is normal, and by itself it is not a problem — but if you leave it unmanaged, two shoppers can open what they believe is the same product page and see two noticeably different pages.
This guide covers the two settings that control it. They solve two separate duplications, so most stores want both.
| Setting | Lives in | Solves |
|---|---|---|
| Product Page Surface | J2Commerce configuration | The product page vs. the article page |
| Strict Routing | Joomla's System - SEF plugin | The friendly URL vs. the raw index.php URL |
Prerequisites
- J2Commerce 6 installed and activated
- Search Engine Friendly URLs enabled in System -> Global Configuration -> Site
- At least one published product
Why a Product Has Several Addresses
Two things each create a second address for the same product.
1. Every product is backed by an article. J2Commerce builds products on top of Joomla articles, so the same content is reachable as a J2Commerce product page and as the plain Joomla article. Two pages, two layouts, one product.
2. Joomla answers both the friendly and the raw address. With Search Engine Friendly URLs turned on, Joomla writes friendly links into your site. It still answers the raw form if someone types or shares it. Both of these return the same product:
index.php?option=com_j2commerce&view=product&id=6927
graphic-kits/dirt/yamaha/yamaha-pw50-dirt-bike-graphic-kit-1990-2022-northstar-blue
Turning on Search Engine Friendly URLs does not switch the raw address off.
Part 1: Product Page Surface
This setting decides whether the product publishes as a product page, as an article, or as both.
Where to Find It
- Go to J2Commerce -> Configuration.
- Open the Product Display tab.
- Find Product Page Surface.
The Three Options
| Option | What shoppers get | Use it when |
|---|---|---|
| Both pages | The product page and the article page are both published. This is the default. | You are migrating, or you deliberately use articles for long-form content and product pages for buying. |
| Product page | The product page is the published one. The article page points at it. | Most stores. Your catalog is the storefront. |
| Article page | The article page is the published one. The product page points at it. | Content-led sites where the article is the real page and the cart is secondary. |
What Happens to the Other Page
When you choose Product page or Article page, J2Commerce does three things to the one you did not choose:
- Adds a canonical link pointing at the page you chose, so search engines consolidate on it.
- Marks it noindex, so search engines stop listing it separately.
- Redirects visitors to the page you chose.
Choosing Both pages does none of these — both stay fully published, which is why it is the option that leaves a duplicate in place.
Note
J2Commerce leaves your own menu items alone. If you have built a menu item that points directly at the page being redirected away from, that menu item still works and is not redirected.
Part 2: Strict Routing
Product Page Surface does not touch the second duplication, the friendly-versus-raw address. That one is a Joomla setting.
What Goes Wrong Without It
The raw address does not match any menu item. When Joomla cannot match a menu item, it falls back to your default menu item — usually your home page — and applies that item's settings to the product page.
The result is one product, two visibly different pages. On a real store, the raw address produced:
- An extra page heading and an extra breadcrumb trail, because the fallback menu item adds its own page header on top of the product layout's
- A different page wrapper, so section styling did not match
- Image zoom switched on, when the product page's own menu item has it switched off
Nothing is broken. The product still sells. But a shopper who arrives from a shared or bookmarked raw link gets a page that does not look like the rest of your store, and any page setting you made on the product menu item is quietly ignored.
Turning It On
- Go to System -> Plugins.
- Search for System - SEF and open it.
- Set Strict Routing to Yes.
- Click Save & Close.
Caution
Strict Routing is set to No on a new install. It is off by default in Joomla, so unless someone has already changed it, your store is serving both address forms right now.
What It Does
With Strict Routing on, a request to the raw address gets a 301 permanent redirect to the friendly one. The visitor lands on the correct page, with the correct menu item, the correct layout, and the correct settings. Search engines follow the redirect and keep only the friendly address.
Using the example from earlier:
Request: index.php?option=com_j2commerce&view=product&id=6927
↓ 301 redirect
Lands on: graphic-kits/dirt/yamaha/yamaha-pw50-dirt-bike-graphic-kit-1990-2022-northstar-blue
The friendly address itself is not redirected, so there is no loop.
Verifying It Works
- Copy a product's friendly URL from your storefront.
- In the same browser, visit the raw form — your site address followed by
index.php?option=com_j2commerce&view=product&id=and the product's ID. You can read the ID from J2Commerce -> Catalog -> Products. - Watch the address bar.
Working: the address bar changes to the friendly URL and the page looks exactly like the one you copied in step 1.
Not working: the address bar keeps the raw form. Re-check that Search Engine Friendly URLs are on and that you saved the plugin.
Configuration Options
| Setting | Where | Default | Recommended |
|---|---|---|---|
| Product Page Surface | J2Commerce -> Configuration -> Product Display | Both pages | Product page for most stores |
| Strict Routing | System -> Plugins -> System - SEF | No | Yes |
| Search Engine Friendly URLs | System -> Global Configuration -> Site | Yes | Yes — required for Strict Routing to do anything |
Tips
- Set both of these before you submit a sitemap or start an ad campaign. Changing them later means search engines have to re-crawl and re-consolidate, which takes time.
- Strict Routing is a site-wide Joomla setting. It applies to every component on your site, not only J2Commerce.
- If you have paid links pointing at raw addresses, update them at the source. A campaign parameter on the end of a raw address prevents the redirect from firing — see Troubleshooting below.
- Build a menu item for your product list view. Product URLs route through their category, so a menu-bound catalog gives you tidier addresses throughout.
Troubleshooting
The raw URL still does not redirect, and it has a tracking parameter on the end
Cause: Joomla's Strict Routing deliberately does nothing when the address carries an extra parameter it cannot fold into the friendly URL. Campaign tags such as utm_source, gclid, and fbclid are the common case. Joomla takes the cautious route and leaves the address alone rather than risk discarding your tracking data.
Solution: Fix the links at the source — point your ads, newsletters, and affiliate links at the friendly URL with the campaign tag appended to that:
- Copy the product's friendly URL from your storefront.
- Append the campaign parameters to it.
- Update the campaign, newsletter, or affiliate feed to use the new link.
Shoppers report the product page looks different from the rest of the site
Cause: They arrived on the raw address, so a fallback menu item supplied the page settings.
Solution: Turn on Strict Routing as described above, then confirm with the verification steps.
I set Product Page Surface but both pages are still published
Cause: The setting was left on Both pages, or a menu item points directly at the page you expected to be redirected away from.
Solution:
- Re-check J2Commerce -> Configuration -> Product Display.
- Check Menus for an item pointing at the other page. A direct menu item is respected and is not redirected. Remove or repoint it if you did not intend it.
Product URLs are missing their category path
Cause: The product's backing article has no category, or the category itself is unpublished.
Solution: Open the product, confirm it is assigned to a published Joomla category, and save.