Як змусити Apache розміщувати одну статичну сторінку незалежно від введеної URL-адреси?


9

Я роблю рекламу, що блокує DNS-сервер, який переспрямовує всі рекламні домени до примірника Apache . Так щось на кшталт

www.addomain.com

перенаправляється на

dnsserver.localnetwork

Однак час від часу я натрапляю на посилання більше схожий

www.addomain.com/some_ad

який перенаправляється на

dnsserver.localnetwork/some_ad

якого навіть не існує, а значить, виникає 404помилка.

Я сподівався, що буде якийсь спосіб змусити Apache служити index.html, незалежно від фактичного запиту. Інакше, якщо у вас є альтернативне рішення, яке не передбачає Apache, я теж за це.


1
Ви можете поглянути на apaches mod_rewrite. Перенаправлення всього з домену на /index.html
rechengehirn

Це здається неефективним способом ведення блокування.
Пантера

@ bodhi.zazen Як би ти це зробив? Більшість рекламодавців працюють над подібною концепцією. Блокуйте або перенаправляйте запити до рекламних доменів. Я буду радий застосувати кращу альтернативу, якщо у вас є така.
sayantankhan

1
Якщо чесно, я використовую плагіни noscript і adblock за замовчуванням. Якщо цього недостатньо, ви можете використовувати файл хостів (потребує роботи з обслуговування) або проксі (privoxy), але знову потрібно більше роботи, щоб самостійно підтримувати чорний список. Див. Addons.mozilla.org/en-US/firefox/addon/noscript та addons.mozilla.org/en-US/firefox/addon/adblock-plus , можливо, знадобляться альтернативи залежно від вашого браузера.
Пантера

Відповіді:


18

В Ubuntu переконайтеся, що mod_aliasввімкнено:

sudo a2enmod alias

Потім у вашій директиві VirtualHost ви можете використовувати AliasMatch.

Приклад:

<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>

Тепер все переадресовується на /index.html.


Моє JS, CSS та зображення також переадресовуються разом із цим рішенням. Чи є спосіб запобігти цьому, не роблячи великого регексу, який перевіряє розширення запиту?
Амео

8

Вам потрібно правило переписати у вашому файлі .htaccess. Щось таке, що має працювати:

RewriteRule ^*$  http://www.addomain.com/index.html [R=301,NC,L]

Це робить переспрямування. Він не обслуговує безпосередньо index.html.
сленг

1

Іншим більш простим варіантом буде змінити сторінку помилки 404 на статичну сторінку, яку ви хочете показати для всіх сторінок вашого сайту. Отже, шукайте цей рядок (або щось подібне) у файлах конфігурації apache2:

ErrorDocument 404 /errors/not_found.html

І змініть "/errors/not_found.html" на: "/index.html"

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.