madewithlove/htaccess-api-client

API client for the best htaccess tester in the world.

Package info

github.com/madewithlove/htaccess-api-client

Type:package

pkg:composer/madewithlove/htaccess-api-client

Fund package maintenance!

madewithlove

Statistics

Installs: 33 437

Dependents: 1

Suggesters: 0

Stars: 9

Open Issues: 0

v3.0.0 2026-03-20 08:03 UTC

Requires

Suggests

None

Provides

None

Conflicts

None

Replaces

None

GPL-3.0-or-later fd1cd7599a6a5fee9265483b4cafb54445b927f7

This package is auto-updated.

Last update: 2026-06-20 08:42:15 UTC


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
);