1

nginxで多数のURL(約250)を書き直す必要があります。

から:http://xyzwiki.de/wiki/index.php?title=Article1

に:http://wiki.zyx.de/wiki/AlternativeNameForArcticle1

明らかにソースは古典的なURLと個々の記事の他の名前を使用しているので、私はすべてのソースと宛先を含む表を持っています。

基本的なリダイレクトの例で作業しようとしましたが、機能しませんでした。この理由は、ソースURLがURLパラメーターを使用しているためかもしれないと思いますが、これに対する解決策は見つかりませんでした。

したがって、nginxに一連のソースURLとそれぞれのリライトターゲットを通知するマッピングが必要になります。

4

1 に答える 1

0

個人的には、auto_prepend_file機能を使用してphpでこれを処理します。

これにより、以下のコードブロックは、サーバーのどこかに保存され、auto_prepend_fileがそれをロードするように設定されている場合、すべての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); 
    }
}
于 2012-10-08T17:49:49.497 に答える