Ответ 1
В Apache можно выполнить перезапись вывода с помощью mod_perl: PerlOutputFilterHandler.
В apache.conf можно добавить следующее:
<FilesMatch "\.(html?|php|xml|css)$">
PerlSetVar Filter On
PerlHandler MyApache2::FilterDomain
PerlOutputFilterHandler MyApache2::FilterDomain
</FilesMatch>
Пример кода обработчика фильтра:
#file:MyApache2/FilterDomain.pm
#--------------------------------
package MyApache2::FilterDomain;
use strict;
use warnings;
use Apache2::Filter();
use Apache2::RequestRec();
use APR::Table();
use Apache2::Const -compile => qw(OK);
use constant BUFF_LEN => 1024;
sub handler {
my $f = shift;
my @hostname = split(/\./, $f->r->hostname);
my $new_hostname = $hostname[0].".".$hostname[1];
unless ($f->ctx) {
$f->r->headers_out->unset('Content-Length');
$f->ctx(1);
}
while ($f->read(my $buffer, BUFF_LEN)) {
$buffer =~ s/([a-z0-9]+)+\.domain\./$new_hostname\.$1.domain\./g;
$f->print($buffer);
}
return Apache2::Const::OK;
}
1;
Подробнее о фильтрах Apache mod_perl можно найти здесь: mod_perl: Фильтры ввода и вывода