Domain per Language
Introduction
Give every language of your Joomla site its own domain: example.nl for Dutch, example.de for German. One site, no language code in the URL, and hreflang that points to the right domain.
What it does
A multilingual Joomla site puts every language behind a code in the address: example.com/nl, example.com/de. That works, but your Dutch visitors expect example.nl and your German visitors expect example.de.
Domain per Language gives each content language its own domain, from one Joomla site. One installation, one database, one set of articles, menus and extensions. Only the address changes:
https://www.example.nl/over-onsfor Dutchhttps://www.example.de/ueber-unsfor Germanhttps://www.example.com/about-usfor English
A request gets the language of the domain it arrives on. A link to a page in another language points to the domain of that language. The language switcher and the hreflang links follow.
How it works
- Point your domains at the site. Every domain reaches the same Joomla site, each with its own certificate. That part is done at your host.
- Link each language to a domain. Open the plugin and pick a content language and a domain per row. Paste a full URL if you like: the scheme, path and port are removed when you save. A domain that is not valid, or a language or domain used twice, is refused.
- Save. From that moment every language answers on its own domain.
A language you give no domain stays available as before, with its language code, on the domain of the default site language.
Built for search engines
- No duplicate addresses. A URL that still carries the language code of the domain redirects to the same URL without it. A page in a language that lives on another domain redirects to that domain. The www or bare variant of a domain redirects to the one you configured. All of these are 301 redirects.
- Hreflang on the right domain. The alternate links of the System - Language Filter plugin point to the domain of each language.
- Canonical on the right domain. The canonical link of a page stays on the domain of its language, also when the Site Domain field of the System - SEF plugin is filled in.
- A robots.txt per domain. Give each domain its own rules and its own Sitemap line. This needs a site without a robots.txt file in its root, and the plugin tells you when there is one.
Only page requests move to the domain of their language. A request with a task, a format other than HTML or com_ajax stays where it is, so editors and forms keep working.
Language suggestion
A visitor whose browser prefers another language sees a bar at the bottom of the page: "This page is also available in your language", with a link to the same page on the domain of that language. The text is shown in the language of the visitor.
It is a suggestion, never an automatic redirect, so search engines and shared links are not affected. A visitor who closes the bar does not see it again for 30 days.
Stay logged in across domains
Browsers keep a login per domain, so a member who logs in on example.nl would have to log in again on example.de. With this option switched on, a logged-in user who follows a link to another language domain is logged in there as well.
- The handover uses a one-time token that is valid for 60 seconds and for one domain.
- Only a hash of the token is stored.
- Logging out logs the user out on every domain. This needs sessions stored in the database, which is the Joomla default.
Domain health check
One button on the plugin screen checks every saved domain and shows the result per check:
- DNS: does the domain resolve
- HTTPS: does it reach this site, and not another server
- Certificate: is it valid, and until when
- HTTP to HTTPS: does the plain address redirect
- www variant: does the other variant redirect to this domain
- robots.txt: does the domain serve the robots.txt from the settings
It also checks the site itself: the session storage, the System - Language Filter plugin and search engine friendly URLs.
Good to know
- The System - Language Filter plugin must be enabled and search engine friendly URLs must be on. The plugin settings warn you when one of them is off.
- Site name, meta description and template style per domain need no extra settings. Joomla already has these per content language, and a language is a domain here.
- Extensions that build their own list of URLs, such as a sitemap generator, can ask the plugin for the final address of a link. The documentation explains how.
Technical details
- System plugin, built on the namespaced Joomla plugin architecture with a service provider
- Joomla 6, PHP 8.3 or higher
- One database table, for the one-time login tokens; removed again on uninstall
- No template overrides, no core changes
- Interface in English, Dutch, German, French, Italian and Spanish
- Updates through the Joomla update system. An update request to the Joomill update server carries diagnostic headers with site and environment information; the extension installs the shared "Joomill - Update Logging" plugin for this
Free
Domain per Language is free, with every feature included, and licensed under the GNU GPL version 3 or later.
Domain per Language
- Version:
- 1.0.1
- Developer:
- Joomill
- Last updated:
-
Oct 08 2026
14 hours ago - Date added:
- Oct 08 2026
- License:
- GPLv2 or later
- Type:
- Free download
- Includes:
- p
- Compatibility:
- J6
Share