Come creare regole negative in Apache?


2

Ho un virtualhost che ho configurato per reindirizzare qualsiasi hit su un sito diverso, quindi:

<VirtualHost *:80>
  Redirect 301 / http://other.site/
</VirtualHost>

Ora vorrei riconfigurarlo in un modo, in modo che reindirizzi qualsiasi hit, ad eccezione di una directory virtuale specifica . Intuitivamente, penso alcuni simili:

<VirtualHost *:80>
  <Location ! "/subdir">
    Redirect 301 / http://other.site/
  </Location>
  ...configuration for /subdir...
</VirtualHost>

È possibile in Apache? Come ho capito la sua configurazione, non è molto forte in nessuna regola negativa.

Risposte:


1

Sì, è possibile. Puoi usare RedirectMatch con il modulo Apache mod_alias , in questo modo:

<VirtualHost *:80>
    ServerName _default_
    RedirectMatch 301 ^/(?!subdir...)(.*) http://other.site/
</VirtualHost>

Oppure puoi usare il modulo mod_rewrite di Apache e fare questo:

<VirtualHost *:80>
    ServerName _default_
    RewriteCond %{REQUEST_URI} !^/subdir...
    RewriteRule (.*) http://other.site/ [L,R=301]
</VirtualHost>
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.