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

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> 
  • Простой HTTP-сервер командной строки
  • Нужна программа командной строки для загрузки всех ссылок http: // https: // scp: // ftp: // style (например, ubuntu)
  • Как я могу перечислить каждый порт, обслуживающий веб-страницу
  • Загрузка каталога в HTTP
  • Как настроить pfsense на NAT-серверы?
  • Почему у pepperflashplayer открыто почти 50 портов?
  • Лучший способ сравнить локальный файл с удаленным файлом http
  • Запустите простой HTTP-сервер локально на порту, отличном от 80
  • OpenWRT перенаправляет трафик на основе запрашиваемой пары домен / порт
  • Неустранимая ошибка: класс HttpRequest не найден
  • Как получить URL-адрес через HTTP с netcat?
  • Использование socat to Tunnel / Proxy TCP позволяет разделить передачу / получение в отдельные файлы
  • Interesting Posts
    Linux и Unix - лучшая ОС в мире.