I was given a VM at my company to install web software on. But I came across a rather bizarre issue where PHP variables would be overwritten (rewritten) by the server if they matched a specific pattern. What could rewrite PHP variables like this?
The following is as an entire standalone script.
<?php
$foo = 'b.domain.com';
echo $foo; // 'dev01.sandbox.b.domain.com'
$bar = 'dev01.sandbox.domain.com';
echo $bar; // 'dev01.sandbox.sandbox.domain.com'
$var = 'b.domainfoo.com';
echo $var; // 'b.domainfoo.com' (not overwritten because it didn't match whatever RegEx has been set)
?>
Essentially any variable which contains a subdomain and matches on the domain name would be rewritten. This isn't something mod_rewrite would be able to touch, so it has to be something at the server level that is parsing out PHP and rewriting a string if it matches a RegEx.
Output overwriting is possible within Apache by using mod_perl: PerlOutputFilterHandler.
The following could be added to an apache.conf to set the output filter:
Example filter handler code:
More on Apache mod_perl filters can be found here: mod_perl: Input and Output Filters