A URL is often the first thing Google and the user read. store.com/mens-running-shoes inspires trust and contains a keyword; store.com/index.php?id_product=42&controller=product adds nothing and gets fewer clicks in the results. Managing your PrestaShop SEO URLs is a high-leverage, low-risk optimization â provided you never break an address that's already indexed. This guide covers enabling URL rewriting, building slugs, 301 redirects, canonicals and multilingual URLs, with the exact back-office paths for 1.7, 8 and 9.
PrestaShop SEO & URLs: where it all lives
Two places matter in the back office:
- Advanced Parameters > SEO & URLs: this is the control center. Here you enable friendly URLs, define the address format (product, category, manufacturer, CMS) and access the redirects (drop-down menu at the bottom of the page). This section is identical in 1.7, 8 and 9.
- Catalog > Products > [a product] > SEO & URLs tab (or "SEO" depending on the version): this is where you set the friendly URL for a specific product page, its title tag, its meta description and its redirect when the product is disabled.
Good management of your PrestaShop SEO & URLs works on two fronts: ranking (keyword in the URL, a structure that's readable for crawling) and click-through rate (a clear address reassures).
What is an SEO-friendly URL?
An SEO-friendly URL (or "rewritten URL") is a human-readable web address that is short, descriptive and contains the target keyword â as opposed to a technical parameter-based URL (?id_product=). On PrestaShop, you get it by enabling friendly URLs (URL rewriting), which turn dynamic addresses into clean paths via the .htaccess file.
Before / after on the same product page:
BEFORE: /index.php?id_product=42&controller=product&id_lang=1
AFTER: /mens-running-shoes-trail-42.html
The .html suffix and the trailing id_product (42) are added automatically by PrestaShop: they make the URL unique and let the engine find the product page even if the slug changes. This is intentional â don't try to remove them without a dedicated module.
Enabling URL rewriting
Path: Advanced Parameters > SEO & URLs, URL configuration block > Friendly URL â set to Yes.
Server prerequisite: the Apache module mod_rewrite must be active. PrestaShop shows its status at the top of the page; if you see "URL rewriting: mod_rewrite is unavailable", contact your host before enabling the option, otherwise all your pages will 404. On Nginx, rewriting is configured directly in the server block (PrestaShop doesn't generate a .htaccess file that Nginx can use).
After enabling it, click "Generate a .htaccess file" (same page, bottom of the screen) so PrestaShop rewrites the rules. A URL cache is stored in the database: clear the cache (Advanced Parameters > Performance > Clear cache) if old addresses persist.
Structuring your slugs: 7 concrete rules
- Short and descriptive: 3 to 5 useful words, primary keyword first. Aim for under 60 characters for the readable slug (excluding domain and suffix).
- Hyphens, never underscores:
running-shoes, notrunning_shoes. Google treats the hyphen as a word separator; the underscore isn't. - Lowercase, no accents or special characters: PrestaShop transliterates
Êâeand strips spaces, but check:summer-jacket, notsummer-jacket-ÊtÊ. - No unnecessary stop words ("the", "of", "and", "for") if they add nothing to the meaning or the keyword.
- Category / product consistency without over-duplication. The category keyword can appear in the product slug, but avoid
/shoes/running-shoes/mens-running-shoes. - Stability: never change a slug that ranks well without a strong reason. Every change resets the clock while Google re-crawls and transfers authority.
- One slug per language: don't reuse the same slug for two products â PrestaShop then appends an ugly numeric suffix and the signal gets diluted.
Copy-paste product slug template:
[product-type]-[key-feature]-[gender|material]
Ex.: linen-maxi-dress-women
black-leather-tote-bag
led-bulb-e27-9w
Where to set it per product: Catalog > Products > [product] > SEO & URLs > "Friendly URL" field. Leave it empty and PrestaShop generates it from the product name; fill it in to take control.
Category URL format and the tree structure
Path: Advanced Parameters > SEO & URLs, Schema of URLs block. The Route to category field accepts variables: {id}, {rewrite}, {meta_keywords}, etc.
Two schools of thought on PrestaShop:
- Flat URL (default):
/running-shoesâ the category doesn't include its parents. Simple, robust, recommended for most stores. - Deep URL:
{categories:/}{rewrite}produces/men/shoes/running. More descriptive, but every category move breaks the URL and requires a redirect.
Only change the schema before going live. On an established store, changing the format rewrites thousands of URLs at once: do it only with a complete redirect plan.
Pitfall #1: breaking an indexed URL
Changing the slug of an already-indexed page without a redirect creates a 404 and loses all the authority that URL had accumulated.
Golden rule: any change to an existing URL must be paired with a 301 redirect (permanent) from the old to the new.
How to set a 301 on PrestaShop:
- Disabled or deleted product: in Catalog > Products > [product] > SEO & URLs, set "Page not found / Redirection" to "Permanently redirected (301)" and choose the destination product or category. PrestaShop 1.7.6+ offers this field natively.
- Deliberate slug change: PrestaShop does not automatically create the 301 from the old slug. Use a redirect module (e.g. a 301/404 manager) or add the rule by hand in the
.htaccess, after the# ~~start~~line:
RewriteRule ^old-product-slug-42\.html$ /new-product-slug-42.html [R=301,L]
- Watch your 404s: Stats > Best not-found URLs (404) lists the broken URLs to redirect first â cross-reference them with the "Pages" report in Google Search Console.
Common mistake: using a 302 (temporary) by default. A 302 doesn't transfer authority and invites Google to keep the old URL. For a permanent move, it's 301, always.
Canonical URLs and duplicate content
PrestaShop natively generates a <link rel="canonical"> tag on product and category pages since 1.7 â it's your best defense against the duplicate content created by faceted filters.
Watch-outs:
- Faceted navigation (Faceted search):
/shoes?color=black&size=42creates thousands of parameter URLs. The Faceted search module sets a canonical toward the clean category URL and handles therobotsdirectives. Make sure it's configured properly rather than letting Google index every combination. - Set your canonical domain: Advanced Parameters > SEO & URLs > Set shop URL block â pick
wwwor non-wwwonce and for all, and force HTTPS (General Parameters > Enable SSL on all pages). Without this,http://,https://,www.and non-www.are four competing versions of every page. - Pagination:
?p=2must canonicalize to itself (not to page 1), otherwise Google ignores the products on the deeper pages.
URLs and multilingual SEO
If you sell internationally, translate the slugs too, not just the content:
FR: /chaussures-running-homme
EN: /mens-running-shoes
ES: /zapatillas-running-hombre
Keeping a French slug on the English version weakens local SEO: the keyword in the URL no longer matches the page's language. Path: each language has its own "Friendly URL" field in Catalog > Products > [product] > SEO & URLs (language selector at the top of the field).
Also make sure the language prefix is active (Advanced Parameters > SEO & URLs > "Enable the language prefix in the URL" or multistore by domain) to get /fr/ and /en/, and that the hreflang tags point to the translated URLs â otherwise Google serves the wrong language.
Translating every product slug by hand quickly becomes unmanageable beyond a few dozen references. This is exactly the kind of task Fexa AI automates across the whole catalog: it translates titles, descriptions and friendly URLs language by language, without overwriting slugs that are already indexed (so without breaking your redirects). See also Translate your catalog.
FAQ
Should I include the category in the product URL?
It's not necessary. The default flat URL (/product-name-id.html) is robust and avoids redirects every time a product moves between categories. Add the category only if your tree is stable and the section keyword is strong.
Can I remove the trailing .html and id_product?
Technically yes, via an advanced rewriting module, but it's risky: the id_product guarantees uniqueness and URL resolution. The SEO gain is nil. Don't do it on a production store.
I changed a slug and the page 404s in Search Console â what should I do?
Set a 301 redirect from the old slug to the new one (the redirect field on the product page, a redirect module, or an .htaccess rule), clear the PrestaShop cache, then request re-indexing of the new URL in GSC. The old 404 will disappear at the next crawl.
Do filter parameter URLs hurt SEO?
Only if they're indexed. With a correct canonical (a well-configured faceted search module) and possibly a noindex on the deep combinations, they stay harmless. Check the "Pages" report in GSC: if dozens of ?color= URLs show up as "indexed", tighten the configuration.
Should I enable friendly URLs on a store that's already live with indexed parameter URLs?
Yes, but plan the redirects. PrestaShop natively redirects the old ?id_product= addresses to the clean URLs, but check on a sample first, and watch the 404s in the following days.
In summary
Clean, short, descriptive and stable URLs strengthen both ranking and click-through. Enable friendly URLs (with mod_rewrite), craft your slugs by the 7 rules, lock in your canonical domain on HTTPS once and for all, tame faceted filters with the canonical, and always 301-redirect when you change an existing address. For multilingual stores, translate the slugs too. For the big picture, read the complete PrestaShop SEO guide.
Take action. Run your free PrestaShop SEO audit â no installation, no credit card â to spot your unoptimized URLs and missing redirects, or install the Fexa AI module to translate and optimize your slugs across the whole catalog.