Как сделать отрицательные правила в Apache?

У меня есть virtualhost, который я настроил для перенаправления любого удара на другой сайт, так что:

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

Теперь я хотел бы переконфигурировать его таким образом, чтобы он перенаправлял любой удар, за исключением определенного виртуального каталога . Интуитивно я бы подумал, что некоторые подобные:

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

Возможно ли это в Apache? Поскольку я понял его конфигурацию, он не очень силен в любых отрицательных правилах.

  • mplayer не отправляет правильный пользовательский агент
  • Локальный прозрачный прокси
  • Как разрешить доступ к сети только через прокси?
  • Как настроить pfsense на NAT-серверы?
  • Является ли HTTP-перенаправление рассмотренным как связанное соединение с помощью iptables?
  • Истинный HTTPS? Как?
  • Как захватить заголовки и теги HTTP-запросов
  • DD WRT ограничивает доступ, но исключает субдомен
  • One Solution collect form web for “Как сделать отрицательные правила в Apache?”

    Да, это возможно. Вы можете использовать RedirectMatch с модулем mod_alias Apache, например:

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

    Или вы можете использовать модуль mod_rewrite от Apache и сделать это:

     <VirtualHost *:80> ServerName _default_ RewriteCond %{REQUEST_URI} !^/subdir... RewriteRule (.*) http://other.site/ [L,R=301] </VirtualHost> 
    Linux и Unix - лучшая ОС в мире.