Por que HTACCESS RewriteCond %{HTTP_COOKIE} apenas para php e não funciona para html?

Por que HTACCESS RewriteCond %{HTTP_COOKIE} apenas para php e não funciona para html?

Eu estava tentando redirecionar todo o acesso direto na minha subpasta usando este código

RewriteEngine on

RewriteCond %{HTTP_COOKIE} !user_cookie=[^;]
RewriteRule .* http://webhost.org/ [R=301,L]

Sei que estava funcionando apenas para arquivos OHP, mas não para outros arquivos como HTML. Tentei acessar o link do arquivo PHP e funciona como planejei, mas quando estou acessando o outro arquivo com .htmlextensão ele não redireciona, como se estivesse ignorando a condição de .htaccess.

Eu sou novo .htaccess. O que estou fazendo de errado?

Informação do servidor:

  • nova instalação do Vestacp
  • Apache/2.2.15 (CentOS 6 x64)

Responder1

O código que você postou não se aplica necessariamente a solicitações "diretas". Aplica-se quando um cookie não é definido (ou seja, não é enviado de volta no Cookiecabeçalho da solicitação 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 maispersistentedo que você espera.)

Se estiver "funcionando apenas para arquivos PHP, mas não para outros arquivos como HTML", é porque o navegador não está enviando o Cookiecabeçalho de solicitação HTTP para solicitações aos seus arquivos PHP - por algum motivo. Talvez sejam os arquivos PHP que estão "incorretos" e o Cookie:cabeçalho deveria estar sendo enviado - como para arquivos HTML?

A diferença entre seus arquivos PHP e HTML pode estar no cache, domínio e/ou caminho de URL. Isso não tem nada a ver com o seu .htaccessscript.

Para verificar o "acesso direto" é mais comum verificar se há um Referercabeçalho vazio. No entanto, este (e qualquer outro) método que você usar não será totalmente confiável.

informação relacionada