web-dev-qa-db-fra.com

Comment faire en sorte qu'Apache serve une seule page statique, quelle que soit l'URL entrée?

Je crée un serveur DNS de blocage de publication qui redirige tous les domaines de publication vers une instance de Apache . Donc quelque chose comme

www.addomain.com

est redirigé vers

dnsserver.localnetwork

Cependant, je rencontre parfois des liens qui ressemblent davantage à

www.addomain.com/some_ad

qui est redirigé vers

dnsserver.localnetwork/some_ad

qui n'existe même pas et génère donc une erreur 404.

J'espérais qu'il serait possible de faire en sorte qu'Apache serve index.html, quelle que soit la demande réelle. Sinon, si vous avez une solution alternative ne faisant pas appel à Apache, je suis partant pour ça aussi.

9
sayantankhan

Dans Ubuntu, assurez-vous que mod_alias est 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.

18
rechengehirn

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]
8
Tom Damon

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

ErrorDocument 404 /errors/not_found.html

Et remplacez le "/errors/not_found.html" par: "/index.html"

1
brfox