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 1w 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

30

—

LowBetter than 61% of packages

Maintenance17

Infrequent updates — may be unmaintained

Popularity26

Limited adoption so far

Community17

Small or concentrated contributor base

Maturity51

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

1752d 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

[friendsoftypo3/content-blocks

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

103574.3k64](/packages/friendsoftypo3-content-blocks)[wazum/sluggi

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

40543.5k](/packages/wazum-sluggi)[yoast-seo-for-typo3/yoast_seo

Yoast SEO for TYPO3

571.8M9](/packages/yoast-seo-for-typo3-yoast-seo)[derhansen/sf_event_mgt

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

67347.1k11](/packages/derhansen-sf-event-mgt)[brotkrueml/schema

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

35678.3k19](/packages/brotkrueml-schema)[jweiland/events2

Events 2 - Create single and recurring events

2168.1k3](/packages/jweiland-events2)

PHPackages © 2026

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