Skip to content

madewithlove/htaccess-api-client

Folders and files

NameName
Last commit message
Last commit date
Oct 8, 2021
Nov 26, 2021
Nov 26, 2021
Jun 22, 2020
Nov 20, 2019
Nov 26, 2021
Jan 12, 2022
Nov 27, 2020
Oct 28, 2021
Jun 25, 2020

Repository files navigation

htaccess-api-client

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