Skip to content

PSR-15 middleware to normalize the trailing slash of the uri path

License

Notifications You must be signed in to change notification settings

middlewares/trailing-slash

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Nov 21, 2024
8b94acb · Nov 21, 2024

History

54 Commits
Nov 21, 2024
Nov 21, 2024
Aug 3, 2018
Sep 30, 2016
Nov 30, 2019
Nov 30, 2019
Nov 30, 2019
Nov 21, 2024
Jan 13, 2018
Nov 30, 2019
Dec 1, 2020
Nov 21, 2024
Sep 2, 2017
Sep 2, 2017

Repository files navigation

middlewares/trailing-slash

Latest Version on Packagist Software License Testing Total Downloads

Middleware to normalize the trailing slash of the uri path. By default removes the slash so, for example, /post/23/ is converted to /post/23. Useful if you have problems with the router.

Requirements

Installation

This package is installable and autoloadable via Composer as middlewares/trailing-slash.

composer require middlewares/trailing-slash

Example

$dispatcher = new Dispatcher([
	(new Middlewares\TrailingSlash(true))
		->redirect()
]);

$response = $dispatcher->dispatch(new ServerRequest());

Usage

By default, this middleware removes the trailing slash of the uri path. Set true to the constructor's first argument to add instead remove:

//Removes the slash, so /post/23/ is converted to /post/23
$slash = new Middlewares\TrailingSlash();

//Force the slash, so /post/23 is converted to /post/23/
$slash = new Middlewares\TrailingSlash(true);

Of course, if the path contains an extension, the slash is NOT added. For example, images/image.png remains the same, instead be converted to images/image.png/.

redirect

If the path must be converted, this option returns a 301 response redirecting to the new path. Optionally, you can provide a Psr\Http\Message\ResponseFactoryInterface that will be used to create the redirect response. If it's not defined, Middleware\Utils\Factory will be used to detect it automatically.

$responseFactory = new MyOwnResponseFactory();

//Simply removes the slash
$slash = new Middlewares\TrailingSlash();

//Returns a redirect response to the new path
$slash = (new Middlewares\TrailingSlash())->redirect();

//Returns a redirect response to the new path using a specific response factory
$slash = (new Middlewares\TrailingSlash())->redirect($responseFactory);

Please see CHANGELOG for more information about recent changes and CONTRIBUTING for contributing details.

The MIT License (MIT). Please see LICENSE for more information.