Comment puis-je faire en sorte qu'Apache diffuse une seule page statique, quelle que soit l'URL saisie?

9

Je crée un serveur DNS bloquant la publicité qui redirige tous les domaines de publicité vers une instance d' Apache . Donc quelque chose comme

www.addomain.com

est redirigé vers

dnsserver.localnetwork

Cependant, parfois je rencontre des liens plus comme

www.addomain.com/some_ad

qui est redirigé vers

dnsserver.localnetwork/some_ad

qui n'existe même pas et soulève donc une 404erreur.

J'espérais qu'il y aurait un moyen de faire servir Apache index.html, quelle que soit la demande réelle. Sinon, si vous avez une solution alternative qui n'implique pas Apache, je suis prête pour cela aussi.

sayantankhan
la source
1
Vous pourriez jeter un œil à apaches mod_rewrite. Rediriger tout depuis le domaine vers /index.html
rechengehirn
Cela semble être un moyen inefficace de faire du blocage publicitaire.
Panther
@ bodhi.zazen Comment feriez-vous? La plupart des adblockers fonctionnent sur un concept similaire. Bloquez ou redirigez les demandes vers les domaines publicitaires. Je serai heureux de mettre en œuvre une meilleure alternative si vous en avez une.
sayantankhan
1
Pour être honnête, j'utilise noscript et les plugins adblock par défaut. Si cela ne suffit pas, vous pouvez soit utiliser un fichier hosts (prend du travail à maintenir) ou un proxy (privoxy), mais encore une fois, il faut plus de travail pour maintenir vous-même une liste noire. Voir addons.mozilla.org/en-US/firefox/addon/noscript et addons.mozilla.org/en-US/firefox/addon/adblock-plus , vous pouvez avoir besoin d'alternatives en fonction de votre navigateur.
Panther

Réponses:

18

Dans Ubuntu, assurez-vous qu'il mod_aliasest activé:

sudo a2enmod alias

Ensuite, dans votre directive VirtualHost, vous pouvez utiliser AliasMatch.

Exemple:

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

Maintenant, tout est redirigé vers /index.html.

rechengehirn
la source
Mes JS, CSS et images sont également redirigés avec cette solution. Existe-t-il un moyen d'empêcher cela sans faire une grosse expression régulière qui vérifie l'extension de la demande?
Ameo
8

Vous avez besoin d'une règle de réécriture dans votre fichier .htaccess. Quelque chose comme ce qui suit devrait fonctionner:

RewriteRule ^*$  http://www.addomain.com/index.html [R=301,NC,L]
Tom Damon
la source
Cela fait une redirection. Il ne sert pas directement index.html.
argot
1

Une autre option plus simple serait de remplacer la page d'erreur 404 par la page statique que vous souhaitez afficher pour toutes les pages de votre site. Alors, recherchez cette ligne (ou quelque chose de similaire) dans vos fichiers de configuration apache2:

ErrorDocument 404 /errors/not_found.html

Et changez le "/errors/not_found.html" en: "/index.html"

brfox
la source