Как сделать отрицательные правила в 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? Поскольку я понял его конфигурацию, он не очень силен в любых отрицательных правилах.

  • Как разрешить OCSP, но запретить все другие исходящие HTTP-запросы?
  • Сохранение вывода stderr в переменной без модификации stdout и повторение этого действия
  • IPtables - новый vs новый, установленный, связанный
  • Могу ли я создавать переопределенные dns, похожие на запись в / etc / hosts без доступа root
  • Пакеты HTTP 302 для Iptables содержат подозрительную строку домена
  • Есть ли какая-либо командная строка, общий HTTP-прокси (например, Squid)?
  • Установить HTTP-каталог на Raspbian?
  • Активность сервера трассировки Apache для конкретного HTTP-запроса
  • 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 - лучшая ОС в мире.