PHPackages                             flowpack/seo-routing - 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. flowpack/seo-routing

ActiveNeos-package

flowpack/seo-routing
====================

Flow Framework Router to ensure a trailing slash in Neos.

1.3.0(1y ago)14.1k↓31.8%1[1 PRs](https://github.com/Flowpack/Flowpack.SeoRouting/pulls)MITPHPPHP ^8.1CI passing

Since Jan 20Pushed 5mo ago10 watchersCompare

[ Source](https://github.com/Flowpack/Flowpack.SeoRouting)[ Packagist](https://packagist.org/packages/flowpack/seo-routing)[ RSS](/packages/flowpack-seo-routing/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (5)Dependencies (7)Versions (7)Used By (0)

Flowpack.SeoRouting
===================

[](#flowpackseorouting)

- [Flowpack.SeoRouting](#flowpackseorouting)
    - [Sponsoring](#sponsoring)
    - [Introduction](#introduction)
    - [Features](#features)
    - [Installation](#installation)
    - [Configuration](#configuration)
        - [Standard Configuration](#standard-configuration)
        - [Trailing slash mode](#trailing-slash-mode)
        - [Blocklist for redirects](#blocklist-for-redirects)
    - [Thank you](#thank-you)

Sponsoring
----------

[](#sponsoring)

Thank you [Biallo &amp; Team GmbH](https://www.biallo.de/) for sponsoring the work from Sandstorm on this package.

Introduction
------------

[](#introduction)

This package allows you to enforce a trailing slash or enforce no trailing slash and/or lower case urls in Flow/Neos.

Features
--------

[](#features)

Main features:

- **trailingSlash**: ensure that all rendered internal links in the frontend end with a trailing slash (e.g. `example. com/test/` instead of `example.com/test`) and all called URLs without trailing slash will be redirected to the same page with a trailing slash or the opposite (e.g. `example.com/test` instead of `example.com/test/`)
- **toLowerCase**: ensure that camelCase links gets redirected to lowercase (e.g. `example.com/lowercase` instead of `example.com/lowerCase`)

You can de- and activate both of them.

Another small feature is to restrict all *new* Neos pages to have a lowercased `uriPathSegment`. This is done by extending the `NodeTypes.Document.yaml`.

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

[](#installation)

Just require it via composer:

`composer require flowpack/seo-routing`

If you want to use the *toLowerCase* feature you should execute the migration that comes with this package:

`./flow node:migrate 20250124153030 --confirmation true`

This migration transforms all the URLs of all your nodes to lowercase. It's irreversible.

Configuration
-------------

[](#configuration)

### Standard Configuration

[](#standard-configuration)

In the standard configuration we have activated the trailingSlash (to redirect all uris without a / at the end to an uri with / at the end) and do all redirects with a 301 http status.

*Note: The lowercase redirect is deactivated by default, because you have to make sure, that there is no Neos page with an `uriPathSegment` with camelCase or upperspace letters - this would lead to redirects in the neverland. You can achieve this by running the migration that ships with this package, see [installation](#installation).*

```
Flowpack:
  SeoRouting:
    redirect:
      enable:
        trailingSlash: true
        toLowerCase: false
      trailingSlashMode: 'add'
      statusCode: 301
    blocklist:
      '/neos.*': true

```

### Trailing slash mode

[](#trailing-slash-mode)

You can set the `trailingSlashMode` to `add` or `remove`. For this setting to have an effect you have to set `trailingSlash` to true.

This effects redirects and all rendered internal urls.

### Blocklist for redirects

[](#blocklist-for-redirects)

By default, all `/neos` URLs are ignored for redirects. You can extend the blocklist array with regex as you like:

```
Flowpack:
  SeoRouting:
    blocklist:
      '/neos.*': true
```

Thank you
---------

[](#thank-you)

This package originates from .

Thank you, T3N and associates for your work.

###  Health Score

39

—

LowBetter than 86% of packages

Maintenance57

Moderate activity, may be stable

Popularity26

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity51

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% 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

Every ~2 days

Total

5

Last Release

472d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/25d49a6af82b72d2764774a05c307808375016d7aeaaef3862472a6580ff38a7?d=identicon)[flowpack](/maintainers/flowpack)

---

Top Contributors

[![t-heuser](https://avatars.githubusercontent.com/u/53174153?v=4)](https://github.com/t-heuser "t-heuser (13 commits)")

---

Tags

case-insensitiveflowlowercaselowercase-conversionneosneoscmsseotrailing-slashurls

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/flowpack-seo-routing/health.svg)

```
[![Health](https://phpackages.com/badges/flowpack-seo-routing/health.svg)](https://phpackages.com/packages/flowpack-seo-routing)
```

###  Alternatives

[laravel/reverb

Laravel Reverb provides a real-time WebSocket communication backend for Laravel applications.

1.6k9.4M48](/packages/laravel-reverb)[drupal/core

Drupal is an open source content management platform powering millions of websites and applications.

19562.3M1.3k](/packages/drupal-core)[php-heroku-client/php-heroku-client

A PHP client for the Heroku Platform API

24404.8k4](/packages/php-heroku-client-php-heroku-client)[flowpack/neos-matomo

Track visits of your Neos site with the Matomo Open Analytics Platform!

2337.6k](/packages/flowpack-neos-matomo)[flowpack/fullpagecache

Cache full Neos page responses

1481.2k1](/packages/flowpack-fullpagecache)[onesignal/onesignal-php-api

A powerful way to send personalized messages at scale and build effective customer engagement strategies. Learn more at onesignal.com

34170.2k2](/packages/onesignal-onesignal-php-api)

PHPackages © 2026

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