Возьмите Dropbox для примера. Когда пользователь создает новую папку, папка затем создается как часть подкаталога, доступная только для него, если не указано иное, чтобы они могли загружать в нее файлы. Но как они могут просматривать содержимое папки на веб-странице? Скажем, например, что page.php — это веб-страница, где можно просмотреть все содержимое папок. Если новая папка создается пользователем, копируется ли page.php и помещается ли в новую папку? Например:
www.domain.com/folder/page.php
www.domain.com/folder/newfolder/page.php
Существует ли копия файла page.php в каждой созданной пользователем папке во всех подкаталогах, чтобы пользователи могли просматривать содержимое этой папки? Это имеет смысл для меня, но так ли это, или есть другой способ?
Dropbox фактически не создает файлы на своем веб-сервере, соответствующие пути в URL. Вместо этого вы видите способ сделать URL-адреса более дружелюбными. Это называется «перезаписью URL», и точная конфигурация этого поведения зависит от вашего веб-сервера. Для Apache вы используете mod_rewrite
модуль.
Например, ваш Dropbox может выглядеть так, когда вы входите в систему и просматриваете некоторые подпапки:
Внутренне веб-сервер превращает это в нечто вроде:
(Вероятно, Dropbox не использует PHP, и файл наверняка не вызывается home.php
, но это не имеет значения для этого примера)
Отсюда home.php
сценарий смотрит на его $_GET['query']
параметр и анализирует текущий путь. Вероятно, это включает поиск в базе данных и все, что Dropbox использует для фактического управления своими файлами, но это выходит за рамки вашего вопроса.
Ни в коем случае файлы, записанные в файловую систему на веб-сервере; это делает схему URI защищенной от совместного использования, поскольку https://www.dropbox.com/home/path/to/my/file.png вы видите, будет полностью отличаться от другого пользователя https://www.dropbox.com/home/path/to/my/file.png.
Вы также можете найти это руководство полезным:
Других решений пока нет …