O código que você postou não se aplica necessariamente a solicitações "diretas". Aplica-se quando um cookie não está definido (ou seja, não é enviado de volta no cabeçalho da solicitação Cookie
HTTP) - isso não é a mesma coisa. (Presumivelmente, você está configurando um cookie de "sessão"? No entanto, a definição de "sessão" do navegador varia, então esses cookies podem acabar sendo mais persistentes do que você espera.)
Se estiver "trabalhando apenas para arquivos PHP, mas não para outros arquivos, como HTML", é porque o navegador não está enviando o cabeçalho de solicitação Cookie
HTTP para solicitações para seus arquivos PHP - por algum motivo. Talvez os arquivos PHP estejam "incorretos" e o cabeçalho Cookie:
esteja sendo enviado - como para arquivos HTML?
A diferença entre seus arquivos PHP e HTML pode estar no cache, no domínio e / ou no caminho do URL. Isso não tem nada a ver com o seu script .htaccess
.
Para verificar "acesso direto", é mais comum verificar se há um cabeçalho Referer
vazio. No entanto, este (e qualquer) método que você usa não será totalmente confiável.