After moving Rule of Tech to a new server and setting up monitoring I noticed that server-status and server-info Apache modules weren't working as expected. As usual a little bit of Googling solved this problem.
The problem was that the .htaccess rules in WordPress were taking over non-existing server-info and server-status urls given in Apache's config and were returning a page not found error. The rewrite rules by WordPress were setup to handle all the permalinks on the site and for any non-existing file send it to index.php. It really wasn't a WordPress problem and should happen with any application that uses the same type of catch-all rewrite rules to handle all the urls inside the application.
The solution was to specifically add a rewrite rule to not have the server-status and server-info urls processed by adding a rule like: RewriteCond %{REQUEST_URI} !=/server-status
. The other way is to stop the rewriting process when the urls are found by adding a rule like: RewriteRule ^(server-info|server-status) - [L]
.
The WordPress rewrite rules should look like this:
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / # server info and status RewriteRule ^(server-info|server-status) - [L] # RewriteCond %{REQUEST_URI} !=/server-status # /server info and status RewriteCond %{REQUEST_FILENAME} -f RewriteCond %{REQUEST_FILENAME} -d RewriteRule . index.php [L] </IfModule> # END WordPress |
You win the prize - thanks for this.