Como fazer regras negativas no Apache?

2

Eu tenho um host virtual que configurei para redirecionar qualquer acesso a um site diferente, então:

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

Agora, gostaria de reconfigurá-lo de uma forma que redirecionasse qualquer ocorrência, exceto para um diretório virtual específico . Intuitivamente, eu pensaria em algo semelhante:

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

É possível no Apache? Como eu entendi sua configuração, não é muito strong em quaisquer regras negativas.

    
por peterh 21.04.2017 / 00:11

1 resposta

1

Sim, é possível. Você pode usar RedirectMatch com o módulo mod_alias do Apache, assim:

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

Ou você pode usar o módulo mod_rewrite do Apache e fazer isso:

<VirtualHost *:80>
    ServerName _default_
    RewriteCond %{REQUEST_URI} !^/subdir...
    RewriteRule (.*) http://other.site/ [L,R=301]
</VirtualHost>
    
por 21.04.2017 / 01:23