2012-09-11 2 views
3

에서 트래픽을 허용 :htaccess로 단지 내가 다음을 수행 할 것 htaccess로 파일을 설정하기 위해 노력하고있어 특정 HTTP_REFERER

보는 사용자가 특정 도메인 (링크)에서 오는 경우에만 내 웹 사이트를 볼 수 있도록 허용

예를 들어, 나는 도메인이있다. protect.mydomain.com. unprotected.mydomain.com의 링크를 통해 오는 사람들 만 protect.mydomain.com에 액세스 할 수 있기를 바랍니다.

내가 가지고있는 가장 큰 문제는 unprotected.mydomain.com에서 protect.mydomain.com으로 이동하여 protect.mydomain.com의 링크를 클릭하면 protect.mydomain.com 아래의 다른 페이지로 이동하는 protect.mydomain.com의 링크를 클릭하는 것입니다 http_referer가 protect.mydomain.com이기 때문에 다시 리디렉션으로 전송됩니다. 그래서 레퍼러가 protect.mydomain.com이 될 수 있도록하는 체크를했습니다. 작동하지 않으며 어디에서나 액세스가 허용됩니다. 여기에 내 htaccess 파일이 있습니다. (이 모든 HTTPS 아래)

RewriteEngine On 
RewriteBase/
RewriteCond %{HTTP_REFERER} ^https://(.+\.)*mydomain\.com 
RewriteCond %1 !^(protect|unprotected)\.$ 
RewriteRule ^.*$ https://unprotected.mydomain.com/ [R=301,L] 
+0

HTTPS'에 링크 할 당신의 URL의 새로운 기능 : : // protect.mydomain.com /가'당신은 다른 방향에서 접근 특정 리퍼러가 통과 할 수 있도록하고 다른 모든 리디렉션 할 ? –

답변

4

당신은 ^https://(.+\.)*mydomain\.com에 대한 귀하의 리퍼러 일치한다. 어떤 다른 사이트 (예 : http://stealing_your_images.com/)가 protect.mydomain.com에 연결되면 첫 번째 조건이 실패하므로 요청이 https://unprotected.mydomain.com/으로 리디렉션되지 않습니다.

RewriteEngine On 
RewriteBase/

# allow these referers to passthrough 
RewriteCond %{HTTP_REFERER} ^https://(protect|unprotected)\.mydomain\.com 
RewriteRule^- [L] 

# redirect everything else 
RewriteRule^https://unprotected.mydomain.com/ [R,L] 
+0

신난다, 그것은 완전하게 움직였다. 그리고 나는 무엇인가도 배웠다. – Josh

+0

@Josh http 헤더와 http_referer로 가짜로 인식하지 마십시오 http://stackoverflow.com/questions/21807604/preventing-curl-referrer-spoofing – K3rnel31