Wie kann ich Apache dazu bringen, eine einzelne statische Seite bereitzustellen, unabhängig von der eingegebenen URL?

9

Ich mache eine Werbung, die den DNS-Server blockiert, der alle Ankündigungsdomänen an eine Instanz von Apache umleitet . Also so etwas wie

www.addomain.com

wird umgeleitet zu

dnsserver.localnetwork

Gelegentlich stoße ich jedoch eher auf Links

www.addomain.com/some_ad

welches umgeleitet wird zu

dnsserver.localnetwork/some_ad

was nicht einmal existiert und daher einen 404Fehler auslöst.

Ich hatte gehofft, dass es eine Möglichkeit geben würde, Apache zu bedienen index.html, unabhängig von der tatsächlichen Anfrage. Wenn Sie eine alternative Lösung haben, an der Apache nicht beteiligt ist, bin ich auch dafür bereit.

sayantankhan
quelle
1
Sie könnten sich apaches mod_rewrite ansehen. Umleitung von allem nach der Domain zu /index.html
rechengehirn
Dies scheint eine ineffiziente Methode zum Blockieren von Werbung zu sein.
Panther
@ bodhi.zazen Wie würdest du das machen? Die meisten Adblocker arbeiten nach einem ähnlichen Konzept. Blockieren oder leiten Sie die Anfragen an die Werbedomänen weiter. Gerne implementiere ich eine bessere Alternative, wenn Sie eine haben.
Sayantankhan
1
Um ehrlich zu sein, verwende ich Noscript und die Standard-Adblock-Plugins. Wenn dies nicht ausreicht, können Sie entweder eine Hosts-Datei (für die Wartung ist Arbeit erforderlich) oder einen Proxy (Privoxy) verwenden, aber auch für die Pflege einer Blacklist ist mehr Arbeit erforderlich. Siehe addons.mozilla.org/en-US/firefox/addon/noscript und addons.mozilla.org/en-US/firefox/addon/adblock-plus. Je nach Browser benötigen Sie möglicherweise Alternativen.
Panther

Antworten:

18

Stellen Sie in Ubuntu sicher, dass Folgendes mod_aliasaktiviert ist:

sudo a2enmod alias

Dann können Sie in Ihrer VirtualHost-Direktive verwenden AliasMatch.

Beispiel:

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

Jetzt wird alles umgeleitet /index.html.

rechengehirn
quelle
Meine JS, CSS und Bilder werden mit dieser Lösung ebenfalls umgeleitet. Gibt es eine Möglichkeit, dies zu verhindern, ohne einen großen regulären Ausdruck zu verwenden, der die Erweiterung der Anforderung überprüft?
Ameo
8

Sie benötigen eine Umschreiberegel in Ihrer .htaccess-Datei. So etwas sollte funktionieren:

RewriteRule ^*$  http://www.addomain.com/index.html [R=301,NC,L]
Tom Damon
quelle
Das macht eine Weiterleitung. Es dient nicht direkt index.html.
Slang
1

Eine andere einfachere Option wäre, die 404-Fehlerseite in die statische Seite zu ändern, die Sie für alle Seiten Ihrer Site anzeigen möchten. Suchen Sie also in Ihren Apache2-Konfigurationsdateien nach dieser Zeile (oder etwas Ähnlichem):

ErrorDocument 404 /errors/not_found.html

Und ändern Sie "/errors/not_found.html" in: "/index.html"

brfox
quelle