Мне не удалось заставить 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 проходит.
Буду рад, если кто-нибудь сможет мне помочь с этим. Спасибо!