Próbuję użyć wyniku funkcji RewriteMap, aby warunkowo umożliwić dostęp do katalogu.
Intencją jest odczyt znacznika czasu z pliku cookie (my_cookie) i przesłanie go do pliku RewriteMap (my_rewrite_map_func), który zdefiniowałem w httpd.conf (jest to plik wykonywalny, który zawiera ciągi znaków "TRUE" lub "FALSE" na standardowe wyjście, jeśli znacznik czasu w ciasteczku mieści się w określonym przedziale czasowym w Apache).Aplikacja Apache RewriteMap używana do zapobiegania bezpośredniemu dostępowi do plików
RewriteMap my_rewrite_map_func prg:/var/www/program
Zawartość moim pliku .htaccess są:
RewriteEngine On
RewriteCond %{HTTP_COOKIE} my_cookie=([^;]+) [NC]
RewriteCond ${my_rewrite_map_func:%{TIME}%1|FALSE},FALSE ^([^,]+),\1 [NC]
RewriteRule ^(.*)$/[NC,L,QSA,F]
Mogę potwierdzić, że sam program działa, plik cookie jest odczytywany, a timestamp Apache i datownik cookies znajdują się w dozwolony zakres.
Wyrażenie regularne w drugim cyklu RewriteCond sprawdza, czy zwracana wartość $ {my_rewrite_map_func:% {TIME}% 1 | FALSE} jest równa FAŁSZ, jednak niezależnie od tego, do czego to ustawiam, RewriteRule nigdy nie występuje.
Zasadniczo nie mogę określić, jak oszacować wartość $ {my_rewrite_map_func:% {TIME}% 1 | FALSE}. Czy istnieje sposób, w jaki mogę lepiej wyodrębnić lub przechować wartość tego?
Każda pomoc będzie najbardziej ceniona.
AKTUALIZACJA - ROZWIĄZANIE: Nie jestem pewien, dlaczego to pytanie zostało oznaczone jako off topic, to odnosi się do ochrony plików html ze skryptu php za pomocą pliku .htaccess Apache wykorzystaniem mod_rewrite wezwać C++ Program .
Niezależnie od tego, powyższy kod działa idealnie, gdy używany w połączeniu z dwoma dodatkowymi liniami obsłużyć przypadek cookie nie istniejącego:
RewriteCond %{HTTP_COOKIE} !^.*my_cookie.*$ [NC]
RewriteRule ^(.*)$/[NC,L,QSA,F]
Mam nadzieję, że to pomoże innym, którzy doświadczyli trudności z tej samej kwestii; wygląda na to, że odniosło to niewielki sukces w Internecie.
Mój konkretny przypadek dotyczy zapobiegania bezpośredniemu dostępowi do html i innych plików bez modyfikowania ich bezpośrednio lub za pomocą skryptu pobierania. Kod PHP służy do generowania strony z linkami do tych plików, z której Javascript wykonuje wywołanie ajax, aby pobrać znacznik czasu serwera i ustawia plik cookie. Znacznik czasu w pliku cookie jest porównywany z czasem w Apache przy ładowaniu strony, jeśli jest on w określonym zakresie dostępu.
Nie wierzę, że to nie jest temat, jest to wyraźnie związane z LAMPĄ. – puk