Saya punya Apache web server
yang memberikan halaman HTML statis. Untuk beberapa alasan saya tidak dapat mengubah file sendiri, tetapi saya masih ingin menyuntikkan beberapa HTML ke setiap halaman yang dilayani.
Apakah ini mungkin mod_proxy
? Jika tidak, adakah yang bisa merekomendasikan perangkat lunak yang menyediakan fitur seperti itu?
EDIT: Saya harus memasukkan beberapa jenis iklan banner (mis. A javascript
) dan piksel pelacakan.
sumber
ScriptAlias
dan<Directory /some/static/>...</Directory>
,<Directory /path/to/cgi-bin/> Options +ExecCGI</Directory>
dll. Saya tidak ingin mengutak-atik jawaban pengguna tetapi jika Anda meminta, saya akan memberikan lebih banyak info.<?php ob_start(); include("/some/static/page.html"); $contents = ob_get_contents(); ob_end_clean(); echo str_replace('</head>', '<script async>Some script content goes here like adsense code</script></head>', $contents) ?>
gunakan $ content untuk memuat sisa konten halaman. Anda dapat menyimpan file ini sebagai htmlinjector.php atau apa pun dan menyebutnya dalam file htaccess Anda seperti ini:Options +FollowSymLinks RewriteEngine On RewriteCond %{REQUEST_FILENAME} /some/static/page.html RewriteRule ^(.*)$ /htmlinjector.php?url=/some/static/page.html
Saya tidak yakin mengapa ini tidak disebutkan dalam daftar jawaban. Maaf jika butuh 2 tahun untuk melihat pertanyaan ini ...
Cara termudah, paling kuat untuk melakukan apa yang ingin Anda lakukan adalah menggunakan filter Apache .
Hanya memiliki:
Skrip yang mungkin:
Ini akan mengubah semua "a" menjadi "A".
Pastikan untuk mengaktifkan filter di httpd.conf Anda, seperti ini:
Pertanyaan ini menempati urutan teratas di Google dan tidak ada banyak forum
sumber
Berikut ini adalah tutorial tentang cara menggunakan mod_proxy_html untuk mengedit tautan pada halaman web (konten). Anda mungkin dapat menerapkan ini memodifikasi html yang Anda inginkan.
UPDATE: Anda yakin ingin menempuh rute ini? Saya pikir Apache dimaksudkan untuk menyajikan konten, bukan membuatnya. Ini mungkin akan pergi di bagian tampilan kerangka kerja MVC. Alasan saya tidak akan merekomendasikan ini adalah Anda melanggar aturan modularitas . Aplikasi web Anda akan terjalin dengan aplikasi server itu, mempersulit upgrade di masa depan, bergerak, dll.
sumber
Saya lebih suka melakukan ini dengan mod_rewrite dan SSI.
Pertama-tama letakkan path ke dalam variabel lingkungan
kemudian proses itu di file shtml
(bagian dari solusi ini didasarkan pada pertanyaan stackoverflow /programming/40133/getting-apache-to-modify-static-webpages-on-the-fly/1196832 )
sumber
mod_sed sangat cocok di sini. Anda dapat membuat filter keluaran yang cocok dengan tag kepala atau badan penutup, misalnya, dan masukkan html Anda sebelumnya.
sumber
Apakah modul mod_perl dapat digunakan?
http://search.cpan.org/~gozer/Apache2-Layout-0.6/lib/Apache2/Layout.pm
Itu mungkin melakukan apa yang Anda inginkan atau, setidaknya, mengarahkan Anda ke arah yang benar.
sumber
Anda dapat menggunakan Apache mod_substitute untuk menyuntikkan html ke respons keluar menggunakan beberapa kriteria atau ekspresi reguler. Berikut ini penjelasan cara mencapai hal ini.
sumber
Anda dapat melihat direktif header dan footer dari apache, Menggunakan arahan di bawah ini.
Bacaan lebih lanjut ada di sini: http://wannabe.guru.org/scott/hobbies/apache/
sumber
Mod Layout sekarang sudah usang dan jika Anda tidak ingin overhead memanggil skrip eksternal, solusi terbaik yang bekerja untuk saya adalah mod sed . Anda dapat menggunakan mod sed untuk mencocokkan baris pertama doc (1s) dan menambahkan kode skrip header di sana dan mencocokkan baris terakhir ($ s) dan meletakkan footer di sana.
sumber
saya dapat menyisipkan html ke semua halaman melalui Apache, tetapi hanya untuk situs yang di-host oleh apache saya, tidak semua situs melalui server proxy apache saya.
ini cara kerjanya. saya mengatur XAMPP, unduh mod_layout 5.1 untuk apache 2.4. (instal mod_layout sederhana, jika Anda menggunakan XAMPP untuk windows, cukup unduh mod_layout.so 5.1 untuk windows dan masukkan ke folder modul apache Anda $ home / apache / module, lalu tambahkan konfigurasi DSO ke httpd.conf LoadModule layout_module modules / mod_layout.so - jika Anda menggunakan linux atau os lain, Anda harus mengunduh mod_layout.so untuk linux, kemudian jalankan make command untuk menginstal)
Setelah menginstal mod_layout.so untuk windows, cukup masukkan kode ini pada file .htaccess Anda atau httpd.conf Anda akan mendapatkan html masukkan ke semua halaman Anda:
C: /xampp/apache/cgi-bin/footer.php adalah tempat Anda meletakkan file html atau php Anda, dalam situasi saya adalah C: /xampp/apache/cgi-bin/footer.php, tetapi Anda dapat meletakkannya di mana saja , berikan jalan yang benar, kamu akan baik-baik saja
sumber