До недавнего времени был только один путь, это отдавать файлы программно после проверки условий. С появлением nginx появился более рациональный способ особенно в случаях большого объема запрашиваемых данных. Об этом можно
почитать тут.
Есть еще способ, который можно реализовать в Apache, это будут временные ссылки, об этом можно
почитать тут.