
이 코드를 사용하여 하위 폴더의 모든 직접 액세스를 리디렉션하려고 했습니다.
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
게시한 코드가 반드시 "직접" 요청에 적용되는 것은 아닙니다. 쿠키가 설정되지 않은 경우(즉, Cookie
HTTP 요청 헤더로 다시 전송되지 않은 경우) 적용됩니다. 이는 동일한 것이 아닙니다. (아마도 "세션" 쿠키를 설정하고 있는 것 같습니다. 그러나 "세션"에 대한 브라우저의 정의는 다양하므로 이러한 쿠키는 결국 더 많은 결과를 가져올 수 있습니다.지속성 있는예상보다.)
"PHP 파일에만 작동하지만 HTML과 같은 다른 파일에는 작동하지 않습니다"라면 브라우저가 Cookie
어떤 이유로 PHP 파일에 대한 요청에 대한 HTTP 요청 헤더를 보내지 않기 때문입니다. 어쩌면 "잘못된" PHP 파일이고 Cookie:
HTML 파일처럼 헤더가 전송되어야 합니까?
PHP와 HTML 파일의 차이점은 캐싱, 도메인 및/또는 URL 경로에 따라 달라질 수 있습니다. 이것은 스크립트와 관련이 없습니다 .htaccess
.
"직접 액세스"를 확인하려면 빈 헤더를 확인하는 것이 더 일반적입니다 Referer
. 그러나 귀하가 사용하는 이 방법(및 기타 방법)은 완전히 신뢰할 수는 없습니다.