2013-04-11 2 views
0

Google의 웹 마스터 도구뿐만 아니라 404 링크를 DB에 기록하여 모든 잘못된 링크를 가져 와서 결과를 내 .htaccess 파일의 수정 된 301 리디렉션에 넣는 방법을 사용하고 있습니다.301 리디렉션 사용 현황 통계보기

.htaccess가 성장하고 커지는 것처럼 보입니다. 나는 지금 영향을 줄 수없는 또 다른 문제가 있음을 분명히합니다.

(리딩 용으로 가능한 한 작게 .htaccess의 크기를 유지하기 위해) 리다이렉트의 사용법을 추적 할 툴이나 방법이 있는지 궁금합니다.

Google 검색 색인 업데이트 과정에서 잘못된 링크가 나올 때마다 잠시 후에 필자는 필연적으로 필요하지 않은 항목을 제거 할 수 있습니다. 어떤 아이디어?

+0

'.htaccess'는 읽기 쉽도록뿐만 아니라 서버 최적화를 위해 작게해야합니다. PHP 또는 CGI를 사용하여 작업을 수행하는 데 필요한 아이디어는 무엇입니까? –

답변

2

처리 할 수없는 모든 요청을 PHP 스크립트로 다시 작성해야합니다. 그런 다음 데이터로 무엇을 할 수 있습니다.

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule .* /404.php?uri=$0 [L] 

그리고 404.php이 (반 의사)과 같은 작업을 수행합니다 : 유지

// Get the redirect mapping for this URI from the database 
$query = " 
    SELECT location 
    FROM redirects 
    WHERE uri = ? 
"; 
$redirect = $db->query($query, $_GET['uri']); 

if ($redirect) { 
    // Update database with tracking data 
    $query = " 
     UPDATE redirects 
     SET 
      hits = hits + 1, 
      lastHit = NOW() 
     WHERE uri = ? 
    "; 
    $db->query($query, $_GET['uri']); 

    // Do the redirect 
    header($_SERVER['SERVER_PROTOCOL'] . ' 301 Moved Permanently'); 
    header('Location: ' . $redirect); 
} else { 
    // Really not found 
    header($_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found'); 
} 
+0

정말 좋은 생각입니다! – Anonymous

0

(당신이 장소에있는 다른 재 작성 규칙 후) 당신의 .htaccess 추가 기능에서

작은 .htaccess는 RewriteMap을 사용할 수 있습니다 (예 : txt 또는 dbm 참조).

Apache access.log은 이미 요청을 추적해야합니다. 링크가 아직 사용 중인지 확인하려면 access.log의 항목과 RewriteMap 텍스트 파일을 비교할 수 있습니다.

쉽게 비교를 위해, 당신은 또한 단지 URL 경로를 추적, 추가 CustomLog을 추가 할 수

CustomLog ${APACHE_LOG_DIR}/tracker.log %U 

또는

CustomLog ${APACHE_LOG_DIR}/tracker.log "%U %t" 

당신은뿐만 아니라 액세스 시간을 필요로하는 경우

.