PHP middleware to remove a path prefix from request uri

Fund package maintenance!

2.2.0 2021-04-13 11:56 UTC

This package is auto-updated.

Last update: 2023-09-13 17:09:13 UTC


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

Mezzio (formerly Zend Expressive)

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:


Dynamic base path

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 ...