Users guide

To test a set of redirects, whereto needs the input .htaccess file and another input file with test data.

The .htaccess file should contain Redirect and RedirectMatch directives. Blank lines and lines starting with # are ignored. For example, this input includes 6 rules:

# Redirect old top-level HTML pages to the version under most recent
# full release.
redirectmatch 301 ^/$ /pike/
redirectmatch 301 ^/index.html$ /pike/
redirectmatch 301 ^/openstack-projects.html$ /pike/projects.html
redirectmatch 301 ^/language-bindings.html$ /pike/language-bindings.html

# Redirect index.html subpage pointers to main page
redirect 301 /install/ /pike/install/
redirect 301 /basic-install/ /pike/install/

# this is gone and never coming back, indicate that to the end users
redirect 410 /nova/latest/man/nova-cert.html

The test data file should include one test per line, including 3 parts: the input path, the expected HTTP response code, and the (optional) expected output path. For example:

/ 301 /pike/
/ 301 /pike
/install/ 301 /pike/install/
/no/rule 301 /should/fail
/nova/latest/man/nova-cert.html 410

# verify that this path is not redirected
/pike/index.html 200

The output from whereto includes a report of any tests that do not match, including if no rules match and if multiple rules match. For example:

$ whereto -q --ignore-untested .htaccess test.txt

Test on line 2 did not produce expected result: / 301 /pike
  [7] redirectmatch 301 ^/$ /pike/
No rule matched test on line 4: /no/rule 301 /should/fail

2 failures