2012-10-08 4 views
1

nginx에서 많은 수의 URL (약 250 개)을 다시 작성해야합니다.많은 개별 URL에서 nginx 다시 쓰기 사용하기

에서 : 소스는 모든 소스와 대상에 나는 테이블이 개별 기사 고전 URL과 다른 이름을 사용하지 http://wiki.zyx.de/wiki/AlternativeNameForArcticle1

으로 분명히 : http://xyzwiki.de/wiki/index.php?title=Article1

합니다.

기본 리디렉션 예제로 작업하려했지만 작동하지 않았습니다. 나는 이것이 소스 URL이 URL 매개 변수를 사용하는 이유라고 생각하지만, 이것에 대한 해결책을 찾지 못했습니다.

그래서 나는 nginx에게 일련의 소스 URL과 해당 재 작성 대상을 알려주는 매핑이 필요합니다.

답변

0

저는 개인적으로 auto_prepend_file 기능을 사용하여 PHP에서이 문제를 처리 할 것입니다.

아래의 코드 블록은 서버의 어딘가에 저장되어 있고 auto_prepend_file이 PHP 호출을로드하도록 설정하면 모든 PHP 호출에 대해 실행됩니다.

if ($_SERVER['SCRIPT_NAME'] == '/index.php') { 
    // only proceed if this is the root index.php file 
    $title = $_GET['title']; 
    $urlMap = array (
      'article1' => 'alternative1', 
      'article2' => 'alternative2', 
      'article3' => 'alternative3', 
      ... 
      'article250' => 'alternative250' 
    ); 

    if (array_key_exists($title, $urlMap)) { 
     // redirect to alternative url 
     header("HTTP/1.1 301 Moved Permanently"); 
     header("Location: http://wiki.zyx.de/wiki/" . $urlMap[$title]); 
     exit; 
    } else { 
     // unset vars and continue otherwise 
     unset($title); 
     unset($urlMap); 
    } 
} 
관련 문제