Bagaimana saya membuat Apache melayani satu halaman statis tidak peduli apa URL yang dimasukkan?

9

Saya membuat iklan yang memblokir server DNS yang mengalihkan semua domain iklan ke instance Apache . Jadi sesuatu seperti itu

www.addomain.com

akan dialihkan ke

dnsserver.localnetwork

Namun, terkadang saya menemukan tautan yang lebih mirip

www.addomain.com/some_ad

yang akan dialihkan ke

dnsserver.localnetwork/some_ad

yang bahkan tidak ada dan karenanya menimbulkan 404kesalahan.

Saya berharap akan ada cara untuk membuat Apache melayani index.html, terlepas dari permintaan yang sebenarnya. Kalau tidak, jika Anda memiliki solusi alternatif yang tidak melibatkan Apache, saya juga siap untuk itu.

sayantankhan
sumber
1
Anda bisa melihat apaches mod_rewrite. Mengarahkan semuanya mulai dari setelah domain ke /index.html
rechengehirn
Ini sepertinya cara yang tidak efisien dalam melakukan adblocking.
Panther
@ bodhi.zazen Bagaimana kamu melakukannya? Sebagian besar adblockers bekerja pada konsep serupa. Cekal atau arahkan permintaan ke domain iklan. Saya akan dengan senang hati menerapkan alternatif yang lebih baik jika Anda memilikinya.
sayantankhan
1
Sejujurnya, saya menggunakan noscript dan plugins adblock default. Jika itu tidak cukup, maka Anda dapat menggunakan file host (membutuhkan pekerjaan untuk dipelihara) atau proxy (privoxy), tetapi sekali lagi dibutuhkan lebih banyak pekerjaan untuk mempertahankan daftar hitam sendiri. Lihat addons.mozilla.org/en-US/firefox/addon/noscript dan addons.mozilla.org/en-US/firefox/addon/adblock-plus , Anda mungkin perlu berganti-ganti tergantung pada browser Anda.
Panther

Jawaban:

18

Di Ubuntu, pastikan mod_aliasdiaktifkan:

sudo a2enmod alias

Kemudian dalam arahan VirtualHost Anda, Anda dapat menggunakan AliasMatch.

Contoh:

<VirtualHost *:80>
    DocumentRoot /path/to/your/host
    ServerName yourdomain.com
    DirectoryIndex index.html

    AliasMatch ^/(.*)$ /path/to/your/host/index.html

    <Directory "/path/to/your/host">
      Require all granted
    </Directory>
</VirtualHost>

Sekarang semuanya dialihkan ke /index.html.

rechengehirn
sumber
JS, CSS, dan gambar saya juga dialihkan dengan solusi ini. Apakah ada cara untuk mencegah hal ini tanpa melakukan regex besar yang memeriksa perpanjangan permintaan?
Ameo
8

Anda memerlukan aturan penulisan ulang di file .htaccess Anda. Sesuatu seperti yang berikut ini seharusnya berfungsi:

RewriteRule ^*$  http://www.addomain.com/index.html [R=301,NC,L]
Tom Damon
sumber
Itu tidak mengarahkan. Itu tidak langsung melayani index.html.
gaul
1

Pilihan lain yang lebih sederhana adalah mengubah halaman kesalahan 404 menjadi halaman statis yang ingin Anda tampilkan untuk semua halaman di situs Anda. Jadi, cari baris ini (atau yang serupa) di file konfigurasi apache2 Anda:

ErrorDocument 404 /errors/not_found.html

Dan ubah "/errors/not_found.html" menjadi: "/index.html"

brfox
sumber