Я делаю DNS-сервер блокировки рекламы, который перенаправляет все рекламные домены на экземпляр Apache . Таким образом, что-то вроде
www.addomain.com
перенаправляется на
dnsserver.localnetwork
Однако иногда я сталкиваюсь с ссылками, более похожими на
www.addomain.com/some_ad
, которые перенаправляются на
dnsserver.localnetwork/some_ad
, который даже не существует и, следовательно, вызывает ошибку 404
.
Я надеялся, что будет какой-то способ заставить Apache работать index.html
, независимо от фактического запроса. В противном случае, если у вас есть альтернативное решение, не связанное с Apache, я тоже за это.
В 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
.
Вам нужно переписать правило в Вашем .htaccess файле. Что-то как следующее должно работать:
RewriteRule ^*$ http://www.addomain.com/index.html [R=301,NC,L]
Другая более простая опция состояла бы в том, чтобы изменить 404 ошибочных страницы на статическую страницу, которую Вы хотите показать для всех страниц на Вашем сайте. Так, ищите эту строку (или что-то подобное) в Ваших apache2 конфигурационных файлах:
ErrorDocument 404 /errors/not_found.html
И изменение "/errors/not_found.html" к: "/index.html"