Proteger documentos PDF para que no se acceda directamente en la URL

Quiero proteger un archivo pdf para que no esté directamente vinculado, pero en lugar de eso, los usuarios que han iniciado sesión puedan acceder a él. Tengo un enlace que actualmente va a una función javascript que publica un formulario: $ ('nameofdoc'). SetProperty ('value', doc); document.getElementById ('sendme'). submit ();

donde sendme es el nombre del formulario y nameof doc el índice del documento que quiero mostrar.

Esto luego va a un archivo php:

 $docpath = $holdingArray[0].$holdingArray[1];

 $file = $holdingArray[0]; //file name
 $filename = $holdingArray[1]; //path to the file]
 header( 'Location:'.$docpath ) ;
 header('Content-type: application/pdf');
 header('Content-Disposition: attachment; filename="'.$filename  . '"');
 readfile($filename)

Todo esto funciona bien, carga el archivo y genera el pdf. Lo que no puedo hacer es proteger el directorio de enlaces directos, es decir, www.mydomain.com/pathToPdf/pdfname.pdf

Pensé en usar .htaccess para proteger el directorio pero está en un host compartido, así que no estoy seguro de la seguridad y, de todos modos, cuando lo he intentado no puedo hacer que funcione.

Cualquier ayuda sería genial ya que este es mi cuarto día de intentar solucionar esto.

Gracias

Actualizar

He recibido mucha ayuda, gracias, pero todavía no he llegado a eso.

Tengo un archivo .htaccess que ahora inicia otro archivo php cuando se solicita un pdf desde el directorio:

 RewriteEngine on
 RewriteRule ^(.*).(pdf)$ fileopen.php

Cuando el archivo fileopen.php no se abre, abre el pdf

 $path = $_SERVER['REQUEST_URI'];
 $paths = explode('/', $path);
 $lastIndex = count($paths) - 1;
 $fileName = $paths[$lastIndex]; 

 $file = basename($path);

 $filepath = $path;

 if (file_exists($file)) {
     header( 'Location: http://www.mydomain.com'.$path ) ;
     header("Content-type: application/pdf");
     header("Content-Disposition: attachment; filename=".$file);
     readfile($filepath);

 }else{
     echo "file not found using path ".$path." and file is ".$file;
 }

La salida es el archivo no encontrado utilizando la ruta /documents/6/Doc1.pdf y el archivo es Doc1.pdf

pero el archivo existe y está en esa dirección, ¿alguna idea?

De acuerdo, me complace informar que Jaroslav realmente me ayudó a resolver el problema. Su método funciona bien, pero es complicado conseguir que todas las cosas del directorio estén alineadas. Al final, pasé unas horas jugando con combinaciones para que funcionara, pero el principio que dio funciona bien. Gracias

Respuestas a la pregunta(3)

Su respuesta a la pregunta