Как заставить Apache обслуживать одну статическую страницу независимо от того, какой введенный URL-адрес?

Я делаю DNS-сервер блокировки рекламы, который перенаправляет все рекламные домены на экземпляр Apache . Таким образом, что-то вроде

www.addomain.com

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

dnsserver.localnetwork

Однако иногда я сталкиваюсь с ссылками, более похожими на

www.addomain.com/some_ad

, которые перенаправляются на

dnsserver.localnetwork/some_ad

, который даже не существует и, следовательно, вызывает ошибку 404.

Я надеялся, что будет какой-то способ заставить Apache работать index.html, независимо от фактического запроса. В противном случае, если у вас есть альтернативное решение, не связанное с Apache, я тоже за это.

9
задан 18 June 2014 в 21:46

3 ответа

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

18
ответ дан 18 June 2014 в 21:46

Вам нужно переписать правило в Вашем .htaccess файле. Что-то как следующее должно работать:

RewriteRule ^*$  http://www.addomain.com/index.html [R=301,NC,L]
8
ответ дан 18 June 2014 в 21:46

Другая более простая опция состояла бы в том, чтобы изменить 404 ошибочных страницы на статическую страницу, которую Вы хотите показать для всех страниц на Вашем сайте. Так, ищите эту строку (или что-то подобное) в Ваших apache2 конфигурационных файлах:

ErrorDocument 404 /errors/not_found.html

И изменение "/errors/not_found.html" к: "/index.html"

1
ответ дан 18 June 2014 в 21:46

Другие вопросы по тегам:

Похожие вопросы: