PHPackages                             bolt/redirector - 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. bolt/redirector

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

bolt/redirector
===============

🔄 This Bolt extension adds redirects using YAML

2.0.0(6mo ago)32.9k5MITPHPPHP &gt;=8.2CI passing

Since Jul 30Pushed 6mo ago3 watchersCompare

[ Source](https://github.com/bolt/redirector)[ Packagist](https://packagist.org/packages/bolt/redirector)[ GitHub Sponsors](https://github.com/bobvandevijver)[ RSS](/packages/bolt-redirector/feed)WikiDiscussions main Synced 1w ago

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

Bolt Redirector
===============

[](#bolt-redirector)

Author: Ivo Valchev

Bolt Redirector is a Bolt CMS extension that performs simple URL redirects defined in a clean YAML config file.

Features
--------

[](#features)

- Define redirects in YAML (`from` → `to`).
- Match redirects by either absolute path (`/old-page`) or full URL (`https://example.org/old-page`).
- Configurable HTTP status code (default **302** / “Found”).
- Avoids redirecting Bolt backend and async/admin requests.

Installation:
-------------

[](#installation)

```
composer require bolt/redirector
```

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

[](#configuration)

After installation, configure the extension using its config file (typically located under your project’s Bolt extensions config directory, depending on how your Bolt project is set up).

The extension ships with a `config.yaml` template that documents these options.

Example `config.yaml`

```
# Redirector extension configuration file

# Optional: status code for redirects
# Common values:
#  - 301 (permanent)
#  - 302 (temporary, default)
status_code: 301

redirects:
  # You can use an absolute path:
  /page/about: /page/about-us

  # You can also match a full URI (quote it because of ":" in "https://"):
  "https://example.org/page/mission": "/page/our-mission"

  # Trailing slashes are normalized, so these are treated the same:
  /blog: /news
  /blog/: /news/
```

Running Rector, PHPStan and Easy Codings Standard
-------------------------------------------------

[](#running-rector-phpstan-and-easy-codings-standard)

First, make sure dependencies are installed:

```
COMPOSER_MEMORY_LIMIT=-1 composer update

```

And then run code quality checks:

- `vendor/bin/rector process -n --no-progress-bar --ansi`
- `vendor/bin/phpstan analyse --ansi`
- `vendor/bin/ecs check src --ansi`

###  Health Score

47

—

FairBetter than 93% of packages

Maintenance66

Regular maintenance activity

Popularity23

Limited adoption so far

Community19

Small or concentrated contributor base

Maturity70

Established project with proven stability

 Bus Factor1

Top contributor holds 52.9% 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 ~233 days

Recently: every ~379 days

Total

8

Last Release

209d ago

Major Versions

1.0.6 → 2.0.02026-01-19

PHP version history (2 changes)1.0.0PHP &gt;=7.2.9

2.0.0PHP &gt;=8.2

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/1835343?v=4)[Bob van de Vijver](/maintainers/bobvandevijver)[@bobvandevijver](https://github.com/bobvandevijver)

![](https://avatars.githubusercontent.com/u/3901745?v=4)[Tobias Feijten](/maintainers/tobias-93)[@tobias-93](https://github.com/tobias-93)

![](https://www.gravatar.com/avatar/78ae1389d35ad7a4cda25bce02c73b64994823df39bc8bd023eea17dd4a54dc9?d=identicon)[I-Valchev](/maintainers/I-Valchev)

---

Top Contributors

[![I-Valchev](https://avatars.githubusercontent.com/u/7093518?v=4)](https://github.com/I-Valchev "I-Valchev (9 commits)")[![bobdenotter](https://avatars.githubusercontent.com/u/1833361?v=4)](https://github.com/bobdenotter "bobdenotter (5 commits)")[![bobvandevijver](https://avatars.githubusercontent.com/u/1835343?v=4)](https://github.com/bobvandevijver "bobvandevijver (1 commits)")[![Spomsoree](https://avatars.githubusercontent.com/u/14187981?v=4)](https://github.com/Spomsoree "Spomsoree (1 commits)")[![Vondry](https://avatars.githubusercontent.com/u/29740752?v=4)](https://github.com/Vondry "Vondry (1 commits)")

###  Code Quality

Static AnalysisPHPStan, Rector

Code StyleECS

Type Coverage Yes

### Embed Badge

![Health badge](/badges/bolt-redirector/health.svg)

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

PHPackages © 2026

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