Если PHP обрабатывает сам логин, самый простой вариант - обслуживать контент через сам PHP.
Вы можете поместить статические файлы в каталог, не сопоставленный с пространством URL, или в сопоставленный URL, который являетсяза каталогом, запрещающим все запросы, а затем используйте readfile
:
//request to /download_static.php?file=xxxx.rtf
if (!has_access())
die("unauthorized");
if ($f = filter_input(INPUT_GET, 'file', FILTER_SANITIZE_STRING,
FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH)) {
if (strpos($f, "/") || strpos($f, "..") || !file_exists("statics/$f"))
die("no such file");
} else {
die("invalid request");
}
header("Content-type: application/rtf"); //or whatever
//can also sent e-tag, last modified, size...
readfile("statics/$f");
Другой вариант, доступный только в том случае, если PHP установлен как модуль Apache, - выполнить аутентификацию и затем вызватьvirtual
.