После долгих исследований я решил это.
Моя система папок настроена так:
/file-share/users-folder-name
Мой .htaccess
файл в /file-share
выглядит следующим образом:
# .htaccess /file-share
RewriteEngine On
RewriteBase /
# no cookie set
RewriteCond %{HTTP_COOKIE} !^.*client.*$ [NC]
RewriteRule ^(.*)$ /file-share-redirect.php?q=$1 [NC,L]
# cookie set
RewriteCond %{QUERY_STRING} !verified$ [NC]
RewriteCond %{HTTP_COOKIE} client=([^;]+) [NC]
RewriteRule ^(.*)$ /file-share/%1/$1?verified [NC,L,QSA]
# custom 404
ErrorDocument 404 /file-share-redirect.php?e=404&q=$1
#end
Если файл cookie установлен, и файл существует в папке клиента, то клиент без проблем перенаправляется в запрошенный файл.Окончательный запрос файла также получает параметр url, чтобы избежать цикла перенаправления.
Если пользователь вошел в систему, но файл cookie не установлен, мой файл file-share-redirect.php
создает файл cookie, а затем перенаправляет его на запрошенный файл.,Срок действия файла cookie, созданного в приведенном ниже коде, истекает через час.
<?php setcookie('client', $users_folder_name, time()+3600); ?>
ОБНОВЛЕНИЕ
Вы можете обеспечить безопасность файла cookie, используя зашифрованное имя файла cookie изначение.Файл cookie будет создаваться только в тех системах, где пользователи входят в систему.
PHP * setcookie()
даже позволит вам создать файл cookie, который недоступен из JavaScript . Я дважды проверил это.
Имена подпапок будут довольно сложными, совершенно не угадываемыми.Никто никогда не увидит имена подпапок, кроме тех, у кого есть доступ по ftp.Даже те, кто вошел в систему, увидят только /_/filename.ext
без подпапки.