Skip to content

madewithlove/htaccess-cli

Folders and files

NameName
Last commit message
Last commit date
Oct 8, 2021
Jun 4, 2021
Nov 8, 2021
Jan 3, 2022
Jun 22, 2020
Nov 21, 2019
Nov 20, 2019
Oct 15, 2021
Jun 18, 2024
Oct 8, 2021
Jun 22, 2020

Repository files navigation

htaccess CLI

Build status Latest Stable Version License codecov

A CLI tool to test how .htaccess files behave.

Installation

To start performing analysis on your code, require htaccess CLI in Composer:

composer require --dev madewithlove/htaccess-cli

Composer will install htaccess-cli's executable in its bin-dir, which defaults to vendor/bin.

Global installation

composer global require madewithlove/htaccess-cli

Then make sure you have the global Composer binaries directory in your PATH. This directory is platform-dependent, see Composer documentation <https://getcomposer.org/doc/03-cli.md#composer-home>_ for details. This allows you to use the tool as htaccess from every location in your system.

Usage

Run the .htaccess CLI tester from a directory containing a .htaccess file.

# using global installation
htaccess http://localhost/foo

# using project-specific installation
vendor/bin/htaccess http://localhost/foo

Where the url is the request url you want to test your .htaccess file with.

Output of the htaccess tester

Usage through Docker

# install the container
docker pull madewithlove/htaccess-cli

# run the htaccess tester in the current folder
docker run --rm -v $PWD:/app madewithlove/htaccess-cli [url] <options>

Usage as a GitHub Action

Check https://github.com/madewithlove/htaccess-cli-github-action if you want to verify how .htaccess files behave in a GitHub Action.

CLI Options

The following options are available:

-r, --referrer[=REFERRER]           The referrer header, used as HTTP_REFERER in apache
--http-user-agent[=HTTP_USER_AGENT] The User Agent header, used as HTTP_USER_AGENT in apache
-s, --server-name[=SERVER-NAME]     The configured server name, used as SERVER_NAME in apache
-e, --expected-url[=EXPECTED-URL]   When configured, errors when the output url does not equal this url
    --share                         When passed, you'll receive a share url for your test run
-l, --url-list[=URL-LIST]           Location of the yaml file containing your url list
-p, --path[=WORKING_DIR]            Path to the location of the .htaccess file you wish to test
-h, --help                          Display a help message

Usages with multiple url's

To test one htaccess file with multiple url's, you can use a yaml file that contains them.

- http://localhost/foo
- http://localhost/bar

If you want to pass an expected url for every url you're testing, you can use this yaml structure, where each url maps to an expected url.

http://localhost/foo: http://localhost/test
http://localhost/bar: http://localhost/test

You can then run the command using

htaccess --url-list ./url-list.yaml

Testing against a working directory

If you want to test for a .htaccess file outside of the current working directory, you can use the -p ./path_to_directory option in the command. For example,

htaccess -p ./html http://localhost/

Note

The tool simulates only one pass through the server, while Apache will do multiple if you get back on the same domain. This is a feature we might still add in the future, but it's a limitation for now.