Problem:
Założeniem było zmigrowanie strony "witryna.pl" pod archiwalny adres "stara.witryna.pl", tak by strona pozostała widoczna jako archiwum dla nowej. Z racji braku dostępów by podmienić adres www strony, doszedłem do wniosku by stworzyć virtualhost, działający jako proxy na serwerze apache.
Rozwiązanie:
Poniżej przedstawiam działający gist, dzięki któremy użytkownik wchodzący pod adres "stara.witryna.pl", wysyła zapytanie do serwera proxy, który przekazuje dalej dane do właściwego vhosta. Serwer ten w locie podmienia wszystkie wystąpienia "witryna.pl" oraz "/" z oryginalej strony na adres "stara.witryna.pl". Działa to w obie strony.
<VirtualHost *:443>
SSLProxyEngine On
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
ServerAlias stara.witryna.pl
ProxyPass "/" https://witryna.pl/
ProxyPassReverse "/" https://witryna.pl/
<Location />
AddOutputFilterByType SUBSTITUTE text/html #AddOutputFilterByType SUBSTITUTE text/text text/html text/plain text/xml text/css application/x-javascript application/javascript application/json SetOutputFilter proxy-html
ProxyPassReverse /
Substitute 's|//witryna.pl/|https://stara.witryna.pl/|i'
Substitute 's|="/|="https://stara.witryna.pl/|i'
RequestHeader unset Accept-Encoding
</Location>
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
SSLCACertificateFile /etc/pki/tls/certs/ca-bundle.crt
</VirtualHost>
Aby nasz serwer proxy, wiedział gdzie się znajduje nasza archiwalna strona, wymagane jest dodanie wpisu w hosts tak by korzystał z naszej starej strony a nie tej która ją zastąpiła.
/etc/hosts
127.0.0.1 witryna.pl
Komentarze