Come posso fare in modo che Apache serva una singola pagina statica, indipendentemente dall'URL inserito?


9

Sto realizzando un annuncio che blocca il server DNS che reindirizza tutti i domini di annunci a un'istanza di Apache . Quindi qualcosa del genere

www.addomain.com

viene reindirizzato a

dnsserver.localnetwork

Tuttavia, ogni tanto mi imbatto in link più simili

www.addomain.com/some_ad

che viene reindirizzato a

dnsserver.localnetwork/some_ad

che non esiste nemmeno e quindi genera un 404errore.

Speravo che ci sarebbe stato un modo per far funzionare Apache index.html, indipendentemente dalla richiesta effettiva. Altrimenti, se hai una soluzione alternativa che non coinvolge Apache, lo sono anche io.


1
Puoi dare un'occhiata agli apaches mod_rewrite. Reindirizzare tutto da dopo il dominio a /index.html
rechengehirn

Questo sembra un modo inefficiente di fare il blocco degli annunci.
Pantera,

@ bodhi.zazen Come lo faresti? La maggior parte degli adblocker lavora su un concetto simile. Blocca o reindirizza le richieste ai domini pubblicitari. Sarò felice di implementare un'alternativa migliore se ne hai una.
Sayantankhan,

1
Ad essere sincero, utilizzo noscript e i plugin predefiniti di adblock. Se ciò non è sufficiente, è possibile utilizzare un file hosts (richiede lavoro per la manutenzione) o un proxy (privoxy), ma di nuovo ci vuole più lavoro per mantenere una lista nera. Vedi addons.mozilla.org/en-US/firefox/addon/noscript e addons.mozilla.org/en-US/firefox/addon/adblock-plus , potresti aver bisogno di alternative a seconda del tuo browser.
Pantera,

Risposte:


18

In Ubuntu, assicurati che mod_aliassia abilitato:

sudo a2enmod alias

Quindi nella direttiva VirtualHost è possibile utilizzare AliasMatch.

Esempio:

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

Ora tutto viene reindirizzato a /index.html.


Anche il mio JS, CSS e immagini vengono reindirizzati con questa soluzione. C'è un modo per impedirlo senza fare una grande regex che controlla l'estensione della richiesta?
Ameo,

8

È necessaria una regola di riscrittura nel file .htaccess. Qualcosa di simile al seguente dovrebbe funzionare:

RewriteRule ^*$  http://www.addomain.com/index.html [R=301,NC,L]

Questo reindirizza. Non serve direttamente index.html.
gergo

1

Un'altra opzione più semplice sarebbe quella di cambiare la pagina di errore 404 nella pagina statica che si desidera mostrare per tutte le pagine del sito. Quindi, cerca questa linea (o qualcosa di simile) nei tuoi file di configurazione di apache2:

ErrorDocument 404 /errors/not_found.html

E modifica "/errors/not_found.html" in: "/index.html"

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.