2012-12-26 4 views
1

유지 보수 모드에서 작동하는 데 완벽하게 작동하는 특정 IP 주소에 대한 액세스를 허용하는 Apache htaccess에 대한 룰 세트가 있습니다. 그러나 이는 또한 wordpress.com 또는 google.com과 같은 일부 추천자가 사이트에 액세스하는 것을 차단합니다. 현재 룰은 다음과 같습니다htaccess의 특정 ip 및 리퍼러 만 허용합니다.

<IfModule mod_rewrite.c> 
RewriteEngine on 
RewriteCond %{REMOTE_ADDR} !^123\.123\.123\.123 

RewriteCond %{HTTP_REFERER} wordpress\.com [NC, OR] 
RewriteCond %{HTTP_REFERER} google\.com [NC] 
RewriteCond %{HTTP_REFERER} ^(.*)$ 
RewriteRule .* /maintenance.html [R=302] 

RewriteCond %{REQUEST_URI} !/maintenance.html$ [NC] 
RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC] 
RewriteRule .* /maintenance.html [R=302,L] 

룰셋 작품보다도하지만 완벽하지 글리치와 함께. 어떻게 든 사이트는 모든 IP에서 액세스 할 수 있으며 리퍼러는 의문의 여지가 있습니다. 특정 IP 및 특정 리퍼러로부터 사이트에 액세스 할 수있는 룰셋이 필요합니다.

답변

1

는 조건의 나머지 부분은 음소거하고,

RewriteCond %{HTTP_REFERER} ^(.*)$ 

아무것도 일치하는 라인처럼 나에게 보인다. 거기에 그 줄은 무엇입니까?

또한 사용자가 의도 한 작업이 문제가되지 않을 수도 있지만 가짜 Referer [sic] 헤더로 요청을 작성하는 것이 어렵지 않습니다.

또한 특정 리퍼러를 허용하고 나머지를 "maintenance.html"에 부딪히는 것이 목표 인 경우 리퍼러에게 일치 조건을 부인하려고한다고 생각합니다. 그러나 나는 당신의 의도를 오해하고 있습니다.

+0

줄을 지우지 만 IP 규칙을 무시하고 유지 관리 페이지로 리디렉션합니다. – anithegregorian

+0

두 번째 조건/규칙 세트는 not 및 image 또는 "offline.html"페이지도 모두 잡습니다. 나는 "offline.html"이 실제로 "maintenance.html"이어야하고 첫 번째 RewriteRule이 없어져야하므로 모든 Cond가 하나의 Rule에 이르게한다고 가정합니다. 맞습니까? –