Hi, We are working on an e-commerce application developed on OutSystems O11 (Self-Managed). The application is multilingual and multi-regional, and we are currently evaluating the best approach for implementing international SEO.
According to Google's international SEO recommendations, each language/region version of a page should have its own unique URL. A commonly recommended structure is:
This URL structure is important for:
Our goal is to determine whether locale information can be included in the URL path when using OutSystems O11.
Specifically, we would appreciate clarification on the following:
Does OutSystems O11 support locale-based URL paths such as: www.site.com/{locale}/{module}/{page}
Example:
Hello.
Locale is part of SEO Rules documentation and Service Center has a section for it
https://success.outsystems.com/documentation/11/building_apps/search_engine_optimization_in_apps/seo_for_outsystems_reactive_web_apps_vs_traditional_web_apps/site_rules_for_seo_friendly_urls/
Hi Nuno, Thanks for sharing the documentation!I went through the Site Rules link, and while it is helpful, it doesn’t fully solve my requirement.
From what I understand, Site Rules in Service Center are mainly used for domain/base URL mapping (e.g., removing the app name or mapping domains to applications). They don’t control screen-level routing or allow dynamic URL structures.
My requirement is to support international SEO for a multilingual and multi-regional site, specifically with locale segments in the URL, such as:
In Reactive Web Apps, this seems to require:-
So it looks like Site Rules alone won’t achieve this use case.
If you have implemented locale-based URL structures in Reactive apps (especially for SEO-friendly multilingual sites), I’d really appreciate any guidance or best practices.
Thanks!
You can get quite close to what you want, but OutSystems O11 doesn’t provide a fully automatic, framework-level “locale segment” router for Reactive apps today. You need to combine:
Below I’ll address your questions point-by-point and outline practical patterns that are being used in the field.
/en-us/module/page
OutSystems 11 supports SEO Friendly URLs and screen aliases, including for Reactive Web Apps (in recent versions of Service Studio / Platform Server 11). This gives you control over the path part of the URL, but it does not natively provide:
/en-us/...
/pt-pt/...
You can, however, configure SEO rules so that:
/en-us/store/product
/pt-pt/store/product
…and then use the URL (or an SEO rule parameter) to determine the locale and set the language.
For traditional web apps this has been supported for a long time using SEO rules and aliases. For Reactive apps, SEO Friendly URLs are available but still have some limitations and require more manual configuration, especially around “root application” and site rules.OutSystems_Platform_SEO_Friendly_URLs
A typical pattern for a self‑managed O11 environment:
Because SEO site rules and domain routing are better supported on traditional web modules, a common approach (even mentioned by OutSystems R&D) is:
Create a small Traditional Web application that acts as a router (or broker).
/locale/...
Configure SEO rules / Site Rules in Service Center:
In your Reactive app:
This is essentially the workaround described by Tiago Simões (OutSystems) when SEO for Reactive was still incomplete.SEO Friendly URLs not supported with Reactive Web Apps?
With the newer technical preview of SEO Friendly URLs for Reactive apps, you can:
Define Screen Aliases in Reactive modules, e.g.:
en-us/store/product
pt-pt/store/product
Use SEO rules to map domain + alias combinations.
However:
{locale}
This is more manageable if you keep a small number of languages/regions and define a convention (e.g., alias pattern: {locale}/store/product).
{locale}/store/product
Given you’re on self-managed O11 and have full control over infrastructure and Service Center:
Decide where you want to do the routing:
Implement URL → Locale mapping:
en-US
pt-PT
fr-FR
Set locale / language in OutSystems:
Hreflang and SEO:
<link rel="alternate" hreflang="..." href="...">
This is one of the harder parts in Reactive because navigation is client-side:
GetCurrentLocalePathPrefix()
/en-us
/pt-pt
history.pushState()
/Store/Product?id=...
/en-us/store/product/...
/store/product
OutSystems has documentation on:
SEO Friendly URLs (primarily for traditional applications, but concepts carry over): OutSystems_Platform_SEO_Friendly_URLs
SEO Friendly URLs for Reactive Web Apps – Technical Preview (forum announcement and discussion with examples and limitations): Technical Preview - SEO Friendly URLs for Reactive Web Apps
Multilingual / multi-tenancy routing patterns (for tenant routing via SEO rules; concepts similar to what you want for locale): OutSystems Multitenancy Masterclass – Tenant Router and SEO-Friendly URLs
There isn’t yet a full “reference architecture” specifically for locale-based paths in Reactive SEO, but the tenant router pattern is almost identical: instead of /r/{tenantName}/{applicationName}, you use /locale/module/page and treat locale as a “tenant-like” selector.OutSystems Multitenancy Masterclass – Tenant Router and SEO-Friendly URLs
/r/{tenantName}/{applicationName}
/locale/module/page
Key limitations / considerations:
These do not “prevent” the URL pattern /locale/module/page, but they mean extra work and possibly a thin traditional layer for routing.
From OutSystems’ own R&D responses and existing documentation, the de facto recommended approach in O11 for complex SEO scenarios (multi-domain, multi-region, multi-locale) is:
Then:
This aligns well with Google’s requirement for unique URLs per language/region, with the router ensuring those URLs exist and respond with the correct localized content.
If you share how many locales/regions you plan to support and whether you have multiple domains, I can outline a concrete URL + module structure tailored to your case.