Middleware to remove the prefix from the uri path of the request. This is useful to combine with routers if the root of the website is in a subdirectory. For example, if the root of your website is /web/public, a request with the uri /web/public/post/34 will be converted to /post/34.
- PHP >= 7.2
- A PSR-7 http message implementation (Diactoros, Guzzle, Slim, etc...)
- A PSR-15 middleware dispatcher
This package is installable and autoloadable via Composer as middlewares/base-path.
composer require middlewares/base-pathSet the prefix to remove:
Dispatcher::run([
new Middlewares\BasePath('/base/path')
]);Used to add the prefix to the Location header (for redirects). For example:
$response = Dispatcher::run([
(new Middlewares\BasePath('/base/path'))->fixLocation(),
function () {
return Factory::createResponse(301)->withHeader('Location', '/post/1');
}
]);
echo $response->getHeader('Location'); // Returns /base/path/post/1This method will store the original path in an attribute.
// Save the original uri with basepath in the custom attribute "before-basepath-uri"
$basepath = (new Middlewares\BasePath())->attribute('pre-basepath-path');Please see CHANGELOG for more information about recent changes and CONTRIBUTING for contributing details.
The MIT License (MIT). Please see LICENSE for more information.