Documentation: Domain per Language plugin
Setting up your domains
The plugin decides which language belongs to which domain. Everything that makes a domain reach your site at all happens outside Joomla. This article lists what to arrange, in the order that works.
1. Point the domains at the same server
Every domain needs an A record (and an AAAA record if you serve IPv6) pointing at the server that runs your Joomla site. Nothing else: no forwarding, no parking page.
2. Add the domains to the same website
All domains must be served by the same Joomla installation, so they belong in one virtual host or one website entry in your hosting panel. Add both the www and the bare variant of every domain: the plugin sends visitors from the variant you did not configure to the one you did, but only if the request reaches Joomla in the first place.
3. Arrange certificates
Every domain, and every www variant, needs a valid TLS certificate. With Let's Encrypt that is one certificate with several names, or one certificate per domain; both are fine. The domain health check in the PRO edition warns you two weeks before a certificate expires.
4. Set up the languages in Joomla
Domain per Language builds on Joomla's own multilingual setup, which has to be complete before a domain means anything:
- install the site language for every language (System > Install > Languages);
- publish a content language per language (System > Content Languages);
- give every language its own menu with its own default home page;
- enable System - Language Filter, with Item Associations on;
- associate your menu items and articles across languages, so the language switcher and hreflang know which page belongs to which.
Joomla's Multilingual Status button in the top bar of the administrator tells you what is still missing.
5. Fill in the plugin
Add one row per language with its domain, save, and check the result on the front end. In the PRO edition, press Check domains afterwards: it tells you per domain whether it resolves, whether it reaches this site over HTTPS, whether the certificate is valid, whether http moves to https, and whether the www variant redirects.
A note on the Site Domain field
If you use the core System - SEF plugin with its Site Domain field filled in, leave it as it is. Domain per Language corrects the canonical link it produces, so every page keeps a canonical on its own language domain.
Moving an existing site
A site that was live with language codes keeps working: the old URL with the code redirects to the new one on its own domain, permanently, so search engines follow along. Give the new domains time to be crawled, and check in Search Console that every domain is verified as its own property.