Sto cercando di utilizzare il risultato di una funzione RewriteMap per consentire in modo condizionato l'accesso a una directory.
L'intenzione è di leggere un timestamp da un cookie (my_cookie) e passarlo nel RewriteMap (my_rewrite_map_func) che ho definito in httpd.conf (È un eseguibile che echos le stringhe "TRUE" o "FALSE" allo stdout se il il timestamp nel cookie si trova entro un certo intervallo di tempo corrente in Apache).Apache RewriteMap utilizzato per impedire l'accesso diretto ai file
RewriteMap my_rewrite_map_func prg:/var/www/program
il contenuto del mio file .htaccess sono:
RewriteEngine On
RewriteCond %{HTTP_COOKIE} my_cookie=([^;]+) [NC]
RewriteCond ${my_rewrite_map_func:%{TIME}%1|FALSE},FALSE ^([^,]+),\1 [NC]
RewriteRule ^(.*)$/[NC,L,QSA,F]
Posso confermare che il programma stesso sta lavorando, il cookie viene letto, e il timestamp Apache e il timestamp dei cookie sono all'interno della intervallo consentito.
La regex sulla seconda verifica RewriteCond se il valore di ritorno di $ {my_rewrite_map_func:% {TIME}% 1 | FALSE} è falso, però, indipendentemente da ciò che ho impostato questo, il RewriteRule non si verifica mai.
In sostanza, non è possibile determinare come valutare il valore di $ {my_rewrite_map_func:% {TIME}% 1 | FALSE}. C'è un modo per estrarre o archiviare meglio il valore di questo?
Qualsiasi aiuto sarebbe più apprezzato.
UPDATE - SOLUZIONE: Non sono sicuro che il motivo per cui la questione è stata contrassegnata come fuori tema, si riferisce alla protezione dei file html da uno script php per mezzo di file di un Apache .htaccess utilizzando mod_rewrite di chiamare un programma C++ .
Indipendentemente da ciò, il codice precedente funziona perfettamente se usato in combinazione con due linee aggiuntive per gestire il caso del cookie non esistente:
RewriteCond %{HTTP_COOKIE} !^.*my_cookie.*$ [NC]
RewriteRule ^(.*)$/[NC,L,QSA,F]
Speriamo che questo aiuterà gli altri che hanno sperimentato difficoltà con lo stesso problema; sembra che ci sia stato poco successo con questo altrove sul web.
Il mio caso specifico riguarda la prevenzione dell'accesso diretto a html e altri file senza modificarli direttamente o utilizzando uno script di download. Il codice PHP viene utilizzato per generare una pagina con collegamenti a questi file, da cui Javascript esegue una chiamata ajax per recuperare il timestamp del server e imposta un cookie. Il timestamp nel cookie viene confrontato con il tempo in Apache al caricamento della pagina, se è all'interno di un determinato intervallo è concesso l'accesso.
Non credo che questo è fuori tema, è chiaramente correlato LAMP. – puk