los / basepath
PHP middleware to remove a path prefix from request uri
Fund package maintenance!
Lansoweb
Installs: 113 682
Dependents: 1
Suggesters: 0
Security: 0
Stars: 14
Watchers: 4
Forks: 4
Open Issues: 0
Requires
- php: ^7.4 || ^8.0
- mezzio/mezzio-helpers: ^5.4
- psr/container: ^1.1
- psr/http-message: ^1.0
- psr/http-server-handler: ^1.0
- psr/http-server-middleware: ^1.0
Requires (Dev)
- ext-json: *
- doctrine/coding-standard: ^9.0
- laminas/laminas-diactoros: ^2.5
- phpstan/phpstan: ^0.12
- phpunit/phpunit: ^9.5
- squizlabs/php_codesniffer: ^3.5
- vimeo/psalm: ^4.7
README
This middleware just removes a prefix from the request uri.
Installation
This middleware can be installed with composer.
$ composer require los/basepath
Usage
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:
$app->pipe(LosMiddleware\BasePath\BasePathMiddleware::class);
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 ... ];