Apache 2.4 Программа внешнего перезаписи не работает - PullRequest
0 голосов
/ 07 апреля 2020

Мне не удалось заставить Apache 2.4 работать с программой внешней перезаписи. Прежде всего, я попробовал пример из https://httpd.apache.org/docs/2.4/rewrite/rewritemap.html#prg, чтобы убедиться, что установка Apache работает как положено, что было успешно.

Затем я попытался настроить то, что я хочу achive. Если отправляется путь типа https://domain.tld/oldapp/123456/docs/note01.html, веб-сервер должен проверить вторую часть URI (= 123456).

  • Если с этой частью все в порядке, следует выполнить перенаправление на /oldapp/docs/note01.html
  • Если проверка не пройдена, необходимо выполнить перенаправление на доступ запрещенная страница (например, noaccess. html).
  • Все остальное должно быть пропущено.

Моя конфигурация:

/ var / bin / oldapp.pl ... которая делает то, что от нее ожидается делать, когда я запускаю его из оболочки

#!/usr/bin/perl
$| = 1;

while(my $uri = <STDIN> ) {
  chomp($uri);
  my ($empty, $repo, $secret, $path) = split(/\//, $uri,4);
  if($repo eq "oldapp") {
    if($secret eq "123456") {
      print "/$repo/$path\n";
    }
    else {
      print "/login/noaccess.html\n";
    }
  }
  else {
    print "$uri\n";
  }
}

oldapp.conf ... часть файла конфигурации Apache

        RewriteEngine On
        RewriteMap mso "prg:/var/bin/oldapp.pl" www-data:www-data
        RewriteRule "-" "${mso:%{REQUEST_URI}}"

        DAVLockDB ${APACHE_LOCK_DIR}/DAVLock

        Alias /oldapp "/var/oldapp"
        <Directory "/var/oldapp">
            Options +Indexes
            Require all granted
        </Directory>

Эта настройка не соответствует ожидается сделать. Нет проверки, и каждый URI проходит.

Буду рад, если кто-нибудь сможет мне помочь с этим. Спасибо!

...