PHPackages                             b13/uniquealiasmapper - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. b13/uniquealiasmapper

ActiveTypo3-cms-extension[Utility &amp; Helpers](/categories/utility)

b13/uniquealiasmapper
=====================

Registers a Mapper for URL enhancements

1.1.0(4y ago)72.8k2[1 issues](https://github.com/b13/uniquealiasmapper/issues)GPL-2.0-or-laterPHP

Since Oct 21Pushed 4y ago6 watchersCompare

[ Source](https://github.com/b13/uniquealiasmapper)[ Packagist](https://packagist.org/packages/b13/uniquealiasmapper)[ RSS](/packages/b13-uniquealiasmapper/feed)WikiDiscussions master Synced 3w ago

READMEChangelogDependencies (1)Versions (2)Used By (0)

Unique Alias Mapper for URL Routing in TYPO3 v9+
------------------------------------------------

[](#unique-alias-mapper-for-url-routing-in-typo3-v9)

TYPO3 v9 comes with great ways to enhance URLs, called "Enhancers" for additions / suffixes for a page URL, and "Aspects" (and their special category "Mappers"), to transform a specific value back and forth between the application and the URL.

This extension ships with a new Mapper called `UniqueAlias`. It works similar to what people know from the `PersistedAliasMapper`, however when using TYPO3 installations, our projects mostly want:

- to have the key unique, even if two records have the same title
- everything special-chared and lower-case

Installation
------------

[](#installation)

Use it via `composer req b13/uniquealiasmapper` or install the Extension `uniquealiasmapper` from the TYPO3 Extension Repository.

Once ready, you can configure the Mapper in your site configuration file.

Example with tt\_address.company
--------------------------------

[](#example-with-tt_addresscompany)

Example which maps `$_GET['addressid']` into a `/address/burger-king-germany` based on the `company` field of `tt_address`.

```
routeEnhancers:
  AliasExample:
    type: Simple
    routePath: '/address/{partneralias}'
    _arguments:
      partneralias: addressid
    aspects:
      partneralias:
        type: UniqueAlias
        tableName: 'tt_address'
        aliasField: 'company'
        expires: '15d'
        uniqueConfiguration:
          fallbackCharacter: '-'
```

In the partial ListItem.html of `tt_address` the link could be generated this way: `Details`.

With the Unique Alias Mapper, the URL will look like this: `https://example.com/my/page/address/burger-king-germany/`

With TYPO3's Core "PersistedAliasMapper" the URL will look like this `https://example.com/my/page/address/Burger%20King%20Germany/`.

On top, this Mapper comes with a caching layer in between, just like RealURL's "uniqAlias" feature did in the past.

Even more complex route enhancers are possible too. An example for a link with a controller/action (Movie/show) of an extension `myext` where the uid is in the parameter `tx_myext_pi1[content]` and `title` is a column of `tx_myext_domain_model_content`:

```
routeEnhancers:
  MyextPlugin:
    type: Extbase
    limitToPages:
      - 24
    extension: Myext
    plugin: Pi1
    routes:
      -
        routePath: '/entry/{myext_title}'
        _controller: 'Movie::show'
        _arguments:
          myext_title: content
    defaultController: 'Movie::list'
    aspects:
      myext_title:
        type: UniqueAlias
        tableName: tx_myext_domain_model_content
        aliasField: title
        expires: 15d
        uniqueConfiguration:
          fallbackCharacter: '-'
```

ToDo
----

[](#todo)

The expiration functionality does not cut it yet, so we need to improve this area. Pull Requests welcome.

Thanks
------

[](#thanks)

Thanks to the RealURL authors for providing such a good logic, which served as inspiration for this Mapper. On top, the creators of the Aspects/Mappers - thanks to them for providing such a flexible and extensible way for creating custom mappers and enhancers.

License
-------

[](#license)

As TYPO3 Core, *uniquealiasmapper* is licensed under GPL2 or later. See the LICENSE file for more details.

Authors &amp; Maintenance
-------------------------

[](#authors--maintenance)

*uniquealiasmapper* was initially created for a customer project by Benni Mack for [b13, Stuttgart](https://b13.com).

[Find more TYPO3 extensions we have developed](https://b13.com/useful-typo3-extensions-from-b13-to-you) that help us deliver value in client projects. As part of the way we work, we focus on testing and best practices to ensure long-term performance, reliability, and results in all our code.

###  Health Score

29

—

LowBetter than 57% of packages

Maintenance17

Infrequent updates — may be unmaintained

Popularity25

Limited adoption so far

Community17

Small or concentrated contributor base

Maturity50

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 57.1% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

1707d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/165630?v=4)[Benni Mack](/maintainers/bmack)[@bmack](https://github.com/bmack)

![](https://avatars.githubusercontent.com/u/2851821?v=4)[b13 GmbH](/maintainers/b13)[@b13](https://github.com/b13)

---

Top Contributors

[![bmack](https://avatars.githubusercontent.com/u/165630?v=4)](https://github.com/bmack "bmack (8 commits)")[![davidsteeb](https://avatars.githubusercontent.com/u/3862523?v=4)](https://github.com/davidsteeb "davidsteeb (4 commits)")[![bihor](https://avatars.githubusercontent.com/u/8191408?v=4)](https://github.com/bihor "bihor (1 commits)")[![Kanti](https://avatars.githubusercontent.com/u/471387?v=4)](https://github.com/Kanti "Kanti (1 commits)")

---

Tags

routingmapperTYPO3 CMSenhancer

### Embed Badge

![Health badge](/badges/b13-uniquealiasmapper/health.svg)

```
[![Health](https://phpackages.com/badges/b13-uniquealiasmapper/health.svg)](https://phpackages.com/packages/b13-uniquealiasmapper)
```

###  Alternatives

[wazum/sluggi

TYPO3 extension for URL slug management with inline editing, auto-sync, locking, access control, and redirects

41515.2k](/packages/wazum-sluggi)[friendsoftypo3/content-blocks

TYPO3 CMS Content Blocks - Content Types API | Define reusable components via YAML

101466.4k45](/packages/friendsoftypo3-content-blocks)[derhansen/sf_event_mgt

Event management and registration - Configurable event management and registration extension based on ExtBase and Fluid

65329.4k9](/packages/derhansen-sf-event-mgt)[brotkrueml/schema

Embedding schema.org vocabulary - API and view helpers for schema.org markup

34628.4k14](/packages/brotkrueml-schema)[yoast-seo-for-typo3/yoast_seo

Yoast SEO for TYPO3

511.7M9](/packages/yoast-seo-for-typo3-yoast-seo)[lochmueller/calendarize

Create a structure for timely controlled tables (e.g. events) and one plugin for the different output of calendar views (list, detail, month, year, day, week...). The extension is shipped with one default event table, but you can also 'calendarize' your own table/model. It is completely independent and configurable! Use your own models as event items in this calender. Development on https://github.com/lochmueller/calendarize

76161.6k13](/packages/lochmueller-calendarize)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
