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

  • Является ли HTTP-перенаправление рассмотренным как связанное соединение с помощью iptables?
  • Как проверить запрос POST через HTTPS?
  • Запуск grep или других команд в файлах на веб-сервере
  • Как отслеживать исходящие HTTP-запросы на одного пользователя?
  • Запрещено У вас нет разрешения на доступ к <directory> на этом сервере
  • DD WRT ограничивает доступ, но исключает субдомен
  • Введите URL-адрес и статус HTTP-статуса
  • OpenWRT перенаправляет трафик на основе запрашиваемой пары домен / порт
  • 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 - лучшая ОС в мире.