Install

Works with Drupal: ^10.3 || ^11

Using Composer to manage Drupal site dependencies

Alternative installation files

Download tar.gz 89.93 KB
MD5: e45551539ac9baed300701dde7478400
SHA-1: 68da19a2342ab493fcbeee7fc54824782f55d77b
SHA-256: b3bc2dcfb10289dc386d7560d1d5a89a7b7d767cd360cc6cfe85d445f7766c49
Download zip 141.59 KB
MD5: 1456f9b19c66f7a076a81b8f5a5d6b85
SHA-1: 20a583eb39b2617fa15deb855981ad50a2f78e3a
SHA-256: 19ce63e1aee38af637ecbab711c39d6b3e5281aa577d2598d8435bd923592ebc

Release notes

Major release. 2.0.0 is a complete rework of domain_path on top of Drupal core's standard path_alias table, with full OOP hook conversion, several new features and many bug fixes. Compared to 8.x-1.6, this is a major architectural upgrade — read the Upgrade notes below before deploying.

Compatibility at a glance

  • Drupal core: requires 10.3 or 11 (was 9.5+ on 8.x-1.6).
  • Domain module: requires 2.x or 3.x — this is the bridge release. Domain 1.x is no longer supported (8.x-1.6 supported ^1.0-beta || ^2; 2.0.0 supports ^2 || ^3).
  • Pathauto: optional, but recommended via the domain_path_pathauto submodule.

Highlights

  • Custom domain_path table replaced by core's path_alias table, with a domain_id column added on indexes for fast per-domain lookups (#3564844, #3577052).
  • All hooks converted to OOP #[Hook] attribute classes (#3573947).
  • Per-domain alias logic moved from node submit handlers to the entity API level — works for any content entity, not just nodes (#3247423).
  • Same alias allowed in different languages on the same domain (#3526991).
  • Pathauto patterns defined for a content type now enable Pathauto automatically on save (#3530964).

New features

  • Domain path list page now filterable by language, domain id and source (#3499723).
  • Outbound URL processing accepts a domain option to force a specific domain alias (#3575163).
  • Domain path settings tab added on the Domain admin page (#3578228).
  • The domain path field is now shown in the sidebar even when "Hide the default URL alias UI" is disabled (#3567963).
  • Slash prefix validated on the form widget (#3519144).
  • Domain path widget no longer requires domain_access — works with domain_source alone (#3478777).
  • Visibility rules on the widget flipped to a more intuitive default (#3460806).
  • Wrong domain list when domain_access field is disabled on the form fixed (#3375368).
  • "Delete domain-specific aliases" checkbox wording clarified (#3461258).

Notable bug fixes

  • Path alias rendering compatibility with domain_source restored (#3568835).
  • "Delete all domain-specific aliases" checkbox now actually works on save (#3576020).
  • Path aliases editable again when editing content (#3582706).
  • Path aliases no longer uniquified across domains (#3582698).
  • Uniquify scoped to the current domain id (#3568107).
  • Domain alias uniqueness constraint scoped to current domain (#3574489).
  • 404 fixed when creating new content with custom domain path + domain_source + pathauto (#3565885).
  • 404 fixed in DomainPathAliasManager fallback to core aliases (#3566322).
  • Errors enabling domain_path_pathauto resolved (#3574827).
  • Pathauto generator no longer breaks taxonomy children (#3577307 — switched from decorator to inheritance).
  • Excessive DB queries fixed: DomainPathAliasManager now uses core's AliasPrefixList properly (#3584103).
  • Migration update hook now ordered correctly (#3583817).
  • No automatic URL generation when an existing non-domain path alias is already defined (#3567955).

Architecture / API

  • DomainPathAliasManager refactored into a decorator with caching (#3563256).
  • New DomainAliasRepository mirroring core's AliasRepository (#3563785).
  • DomainPathFormHelper extracted from DomainPathFormHooks for extensibility (#3585177).
  • alterEntityForm() moved from DomainPathHelper to DomainPathFormHooks (#3584297).
  • Implementation classes annotated with @internal to clarify the public API surface (#3584294).
  • DomainPathautoGenerator switched from decorator to inheritance (#3577307).
  • Plugin annotations replaced by attributes (#3575182).
  • Settings form uses #config_target (#3565027).
  • Constructor no longer reads config — fixes early bootstrap edge cases (#3570992).

Upgrade notes

  • Run drush updatedb after deploying — update hooks migrate aliases from the legacy domain_path table into path_alias with a domain_id column.
  • The legacy domain_path entity type definition (a leftover from 1.x kept around during the migration to path_alias) is now uninstalled by an update hook (#3570553). No manual step needed.
  • Custom code that referenced the legacy domain_path table or entity classes will need updating — query path_alias with the domain_id field instead.
  • If you are still on Domain module 1.x, upgrade Domain to 2.x or 3.x before installing this release.

Internal / quality

  • Test coverage substantially expanded (#3574553, #3574501).
  • Test base updated for PHPUnit 10/11 (#3566468).
  • PHPCS, PHPStan and CSpell clean on CI (#3563491, #3563492, #3563485).
  • GitLab CI runs against current and previous major (#3564171).
  • Tugboat sandbox added for live preview of issues (#3564636, #3565908).
  • Project logo added (#3567203).
  • Outdated CHANGELOG.txt removed (#3565025).
Created by: mably
Created on: 30 Apr 2026 at 09:25 UTC
Last updated: 30 Apr 2026 at 09:25 UTC
New features

Other releases