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(5mo ago)32.9k5MITPHPPHP &gt;=8.2CI passing

Since Jul 30Pushed 5mo 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 today

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

49

—

FairBetter than 94% of packages

Maintenance71

Regular maintenance activity

Popularity24

Limited adoption so far

Community19

Small or concentrated contributor base

Maturity69

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

164d 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)
