This middleware just removes a prefix from the request uri.
This middleware can be installed with composer.
$ composer require los/basepath
Just add the middleware as one of the first in your application.
For example:
$app->pipe(new \LosMiddleware\BasePath\BasePathMiddleware('/site'));
Every request with /site
prefix will be replaced:
/site => /
/site/blog => /blog
/site/contact-us => /contact-us
If you are using mezzio-skeleton,
you can copy config/los-basepath.global.php.dist
to config/autoload/los-basepath.global.php
and modify configuration as your needs.
Then, add the middleware to your pipeline:
$app->pipe(LosMiddleware\BasePath\BasePathMiddleware::class);
In some cases a dynamic base path might be required. This can be achieved with the following code in your configuration file:
$scriptPath = dirname($_SERVER['SCRIPT_NAME']);
return [
// Use directory of script path if available, otherwise default to empty string.
'los' => [
'basepath' => strlen($scriptPath) > 1 ? $scriptPath : '',
],
// rest of the configuration ...
];