madewithlove/htaccess-api-client
API client for the best htaccess tester in the world.
Maintainers
Package info
github.com/madewithlove/htaccess-api-client
Type:package
pkg:composer/madewithlove/htaccess-api-client
Fund package maintenance!
v3.0.0
2026-03-20 08:03 UTC
Requires
- php: ^8.4
- psr/http-client: ^1.0
- psr/http-factory: ^1.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- guzzlehttp/guzzle: ^7.0
- guzzlehttp/psr7: ^2.0
- infection/infection: ^0.32
- phpstan/phpstan: ^2.0
- phpunit/phpunit: ^13.0
Suggests
None
Provides
None
Conflicts
None
Replaces
None
GPL-3.0-or-later fd1cd7599a6a5fee9265483b4cafb54445b927f7
README
👁 Build status
👁 Latest Stable Version
👁 License
👁 codecov
This is an API client to interact with the Htaccess tester.
Installation
composer require madewithlove/htaccess-api-client
Usage
The package can be used with every PSR-compatible http client. In this example, we're going to be using guzzle's PSR adapter.
use Http\Factory\Guzzle\ServerRequestFactory; use Http\Adapter\Guzzle6\Client; use Madewithlove\HtaccessClient $client = new HtaccessClient( new Client(), new ServerRequestFactory() ); $response = $client->test( 'http://localhost', 'RewriteRule .* /foo [R]' ); $response->getOutputUrl(); // "http://localhost/foo" $response->getLines(); /* array(1) { [0]=> object(Madewithlove\ResultLine)#30 (5) { ["line":"Madewithlove\ResultLine":private]=> string(23) "RewriteRule .* /foo [R]" ["message":"Madewithlove\ResultLine":private]=> string(98) "The new url is http://localhost/foo Test are stopped, a redirect will be made with status code 302" ["isMet":"Madewithlove\ResultLine":private]=> bool(true) ["isValid":"Madewithlove\ResultLine":private]=> bool(true) ["wasReached":"Madewithlove\ResultLine":private]=> bool(true) } } */
Server variables
Htaccess Tester supports passing server variables to be evaluated by the rewrite rules. We currently support the following variables.
Server variables can be passed to the test() and share() methods.
$serverVariables = ServerVariables::default()->with( 'SERVER_NAME', 'example.com' ); $response = $client->test( 'http://localhost', 'RewriteCond %{SERVER_NAME} example.com RewriteRule .* /foo [R]', $serverVariables ); $response = $client->share( 'http://localhost', 'RewriteCond %{SERVER_NAME} example.com RewriteRule .* /foo [R]', $serverVariables );
