2013-10-20 6 views
0

"유지 관리를위한 다운"페이지를 만드는 방법에 대한 게시물이 this인데 제대로 작동하려면 문제가 있습니다.CakePHP "유지 관리를 위해"페이지

define('MAINTENANCE', 1); 
if(MAINTENANCE > 0){ 
    require('maintenance.php'); die(); 
} 

이 코드를 /webroot.index.php에 넣으면 작동합니다. 그러나 대답은 IP 주소 확인을 추가하여 다운 된 경우 여전히보기 만하고 모든 업데이트가 원활하게 진행될 수 있도록합니다.

그래서, 문제는, 내 IP 주소를 케이크에 의해 감지되지 않습니다되고이

define('MAINTENANCE', 0); 
if(MAINTENANCE > 0 && $_SERVER['REMOTE_ADDR'] !='188.YOUR.IP.HERE'){ 
    require('maintenance.php'); die(); 
} 

과 같을 것입니다. 내가 입력했습니다 echo $_SERVER['REMOTE_ADDR'] 그리고 그것은 단지 보여줍니다 : : 1. 내 user_id를 사용해 보았지만 다음과 같은 오류가 발생했습니다 Class 'AuthComponent' not found in....

/index.php 및 /App/index.php에 넣으려고했으나 유지 관리 페이지가 트리거되지 않고 페이지가 정상적으로로드됩니다.

+0

':: 1'은 ipv6에서 로컬 호스트입니다. 이 컴퓨터가 귀하의 컴퓨터에서 실행되고 있습니까? – Cfreak

+1

정적 페이지에'307' 리다이렉트를 사용하고,'503' 상태 코드를 사용하여 정적 페이지를 보여줍니다. 이것은 리디렉션이 일시적이며 서버가 유지 보수 상태에 있음을 검색 엔진에 알립니다. – cgTag

+0

@Cfreak 예 저는 localhost에서 실행 중입니다. 무엇이라도 라우터에 할당 된 IP를 표시하지 않습니까? 따라서 라이브 서버에 업로드하면 "실제"IP 주소가 표시됩니다. – user1852176

답변

1

보통 내가하는 일은 mod_rewrite을 사용하고 있습니다. 그건 내 응용 프로그램 코드와 독립적입니다.

RewriteCond %{REMOTE_ADDR} !=127.0.0.1 
RewriteRule . maintenance.php [L] 

maintenance.php 다음과 같이 보일 수 있습니다 :

<?php 
header('HTTP/1.1 503 Service Temporarily Unavailable'); 
header('Retry-After: 86400'); 

?><!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> 
<html><head> 
<title>503 Service Temporarily Unavailable</title> 
</head><body> 
<h1>Service Temporarily Unavailable</h1> 
<p>The server is temporarily unable to service your 
request due to maintenance downtime or capacity 
problems. Please try again later.</p> 
</body></html> 
여기

은 예입니다, 그것은 .htaccess 파일과 같은 폴더에 maintenance.php127.0.0.1에서 기원하지 않는 모든 액세스 시도를 리디렉션

외부 리디렉션을 유발하지 않습니다. 나는 수색 엔진을 가진 어떤 문제도 결코, 그러나 어쩌면 이것은 정비가 아주 오래 걸리지 않기 때문에, 확실하지 않았다, 나는 SEO 전문가가 아니다.

RewriteRule !^maintenance\.php$ /maintenance.php [R=307,L] 

이것은 URL이 이미 가리키는되지 않은 경우 /maintenance.php로 리디렉션 것 : 실제 리디렉션을 사용

(리디렉션 루프를 방지하고 비 일치 패턴)을 Redirect flag를 사용하여 수행 할 수있다 .

이 모든 것이 응용 프로그램에 덜 묶 이도록하려면 서버 또는 가상 호스트 구성에 적절한 규칙을 정의 할 수 있습니다 (액세스 권한이있는 경우에 대비하여).이 옵션은 재정의하는 것이 안전하므로 선호합니다. 그런 식으로 모든 응용 프로그램 코드.

관련 문제