Middleware to normalize the trailing slash of the uri path
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.
This package is installable and autoloadable via Composer as middlewares/trailing-slash.
composer require middlewares/trailing-slash
$dispatcher = new Dispatcher([ (new Middlewares\TrailingSlash(true)) ->redirect() ]); $response = $dispatcher->dispatch(new ServerRequest());
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
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);
The MIT License (MIT). Please see LICENSE for more information.