HTACCESS RewriteCond %{HTTP_COOKIE}가 PHP에서만 작동하고 HTML에서는 작동하지 않는 이유는 무엇입니까?

HTACCESS RewriteCond %{HTTP_COOKIE}가 PHP에서만 작동하고 HTML에서는 작동하지 않는 이유는 무엇입니까?

이 코드를 사용하여 하위 폴더의 모든 직접 액세스를 리디렉션하려고 했습니다.

RewriteEngine on

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

나는 그것이 OHP 파일에서만 작동하고 HTML과 같은 다른 파일에서는 작동하지 않는다는 것을 알고 있습니다. PHP 파일에 대한 링크에 액세스하려고 시도했는데 계획대로 작동하지만 .html확장자가 있는 다른 파일에 액세스할 때 .htaccess.

나는 처음이다 .htaccess. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

서버 정보:

  • Vestacp 새로 설치
  • 아파치/2.2.15(CentOS 6 x64)

답변1

게시한 코드가 반드시 "직접" 요청에 적용되는 것은 아닙니다. 쿠키가 설정되지 않은 경우(즉, CookieHTTP 요청 헤더로 다시 전송되지 않은 경우) 적용됩니다. 이는 동일한 것이 아닙니다. (아마도 "세션" 쿠키를 설정하고 있는 것 같습니다. 그러나 "세션"에 대한 브라우저의 정의는 다양하므로 이러한 쿠키는 결국 더 많은 결과를 가져올 수 있습니다.지속성 있는예상보다.)

"PHP 파일에만 작동하지만 HTML과 같은 다른 파일에는 작동하지 않습니다"라면 브라우저가 Cookie어떤 이유로 PHP 파일에 대한 요청에 대한 HTTP 요청 헤더를 보내지 않기 때문입니다. 어쩌면 "잘못된" PHP 파일이고 Cookie:HTML 파일처럼 헤더가 전송되어야 합니까?

PHP와 HTML 파일의 차이점은 캐싱, 도메인 및/또는 URL 경로에 따라 달라질 수 있습니다. 이것은 스크립트와 관련이 없습니다 .htaccess.

"직접 액세스"를 확인하려면 빈 헤더를 확인하는 것이 더 일반적입니다 Referer. 그러나 귀하가 사용하는 이 방법(및 기타 방법)은 완전히 신뢰할 수는 없습니다.

관련 정보