mod_rewrite is an Apache module that allows for server-side manipulation of requested URLs. mod_rewrite is an Apache module that allows for server-side manipulation of requested URLs. Incoming URLs are checked against a series of rules. The rules contain a regular expression to detect a particular pattern.
One trick is to turn on the rewrite log. To turn it on, try this line in your Apache HTTP Server main configuration or current virtual host file (not in .htaccess
):
LogLevel alert rewrite:trace6
Before Apache httpd 2.4 mod_rewrite, such a per-module logging configuration did not exist yet. Instead you could use the following logging settings:
RewriteEngine On
RewriteLog "/var/log/apache2/rewrite.log"
RewriteLogLevel 3
The RewriteLog directive as mentioned by Ben is not available any more in Apache 2.4.
You need to use the LogLevel directive instead. E.g.,
LogLevel alert rewrite:trace6
See Apache Module mod_rewrite, Logging.
For basic URL resolution, use a command line fetcher like wget
or curl
to do the testing, rather than a manual browser. Then you don't have to clear any cache; just up arrow and press Enter in a shell to rerun your test fetches.
There's the htaccess tester.
It shows which conditions were tested for a certain URL, which ones met the criteria and which rules got executed.
It seems to have some glitches, though.
Based on Ben's answer, you could do the following when running Apache on Linux (Debian in my case).
First create the file rewrite-log.load.
/etc/apache2/mods-availabe/rewrite-log.load
RewriteLog "/var/log/apache2/rewrite.log"
RewriteLogLevel 3
Then enter
$ a2enmod rewrite-log
followed by
$ service apache2 restart
And when you are finished with debugging your rewrite rules,
$ a2dismod rewrite-log && service apache2 restart
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With