Skip to main content

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.