Apache ProxyPassRewrite tidak menulis ulang badan tanggapan yang diterima dari http://test.example.com , hanya header (seperti pengalihan ke halaman 404 dan semacamnya).
Sejumlah alternatif:
Satu ) Tulis ulang aplikasi internal untuk menggunakan jalur relatif alih-alih absolut. yaitu ../css/style.css
bukannya/css/style.css
Dua ) Gunakan kembali aplikasi internal di subdirektori yang sama /folder
daripada di root test.example.com.
Tiga ) Satu dan dua sering tidak mungkin terjadi ... Jika Anda beruntung aplikasi internal hanya menggunakan dua atau tiga subdirektori dan itu tidak digunakan di situs utama Anda , cukup tulis banyak baris ProxyPass:
# Expose Internal App to the internet.
ProxyPass /externalpath/ http://test.example.com/
ProxyPassReverse /externalpath/ http://test.example.com/
# Internal app uses a bunch of absolute paths.
ProxyPass /css/ http://test.example.com/css/
ProxyPassReverse /css/ http://test.example.com/css/
ProxyPass /icons/ http://test.example.com/icons/
ProxyPassReverse /icons/ http://test.example.com/icons/
Empat ) Buat subdomain terpisah untuk aplikasi internal dan cukup membalikkan semua proxy:
<VirtualHost *:80>
ServerName app.example.com/
# Expose Internal App to the internet.
ProxyPass / http://test.internal.example.com/
ProxyPassReverse / http://test.internal.example.com/
</VirtualHost>
Lima ) Terkadang pengembang sama sekali tidak tahu dan memiliki aplikasi mereka tidak hanya menghasilkan mutlak URL tetapi bahkan termasuk bagian hostname di mereka URL dan kode HTML yang dihasilkan terlihat seperti ini: <img src=http://test.example.com/icons/logo.png>
.
A ) Anda dapat menggunakan solusi kombo DNS split horizon dan skenario 4. Pengguna internal dan eksternal menggunakan test.example.com, tetapi DNS internal Anda menunjuk langsung ke alamat ip server test.example.com. Untuk pengguna eksternal, catatan publik untuk test.example.com menunjuk ke alamat-ip server web publik Anda www.example.com dan Anda kemudian dapat menggunakan solusi 4.
B ) Anda benar-benar bisa mendapatkan apache ke tidak hanya permintaan proxy untuk test.example.com, tetapi juga menulis ulang badan respons sebelum akan dikirimkan ke pengguna Anda. (Biasanya proxy hanya menulis ulang HTTP header / response). mod_substitute di apache 2.2. Saya belum menguji apakah tumpukannya baik dengan mod_proxy, tapi mungkin yang berikut ini berfungsi:
<Location /folder/>
ProxyPass http://test.example.com/
ProxyPassReverse http://test.example.com/
AddOutputFilterByType SUBSTITUTE text/html
Substitute "s|test.example.com/|www.example.com/folder/|i"
</Location>