WordPress 將特定的網址轉向指定的網址

WordPress要將某個特定舊網址 → 直接轉向指定的 Page URL,最簡單、可控的方式是在 WordPress 使用 template_redirect

單一網址轉址

例如:

HTML
舊網址:
https://example.com/old-url/



指定 Page:
https://example.com/new-page/

functions.php 或 Code Snippets 加入:

PHP
add_action( 'template_redirect', function () {

    if ( $_SERVER['REQUEST_URI'] === '/old-url/' ) {

        wp_safe_redirect(
            home_url( '/new-page/' ),
            301
        );

        exit;
    }

});

多個指定網址指向不同 Page

如果你有很多組 URL,可以集中管理:

HTML
/category/oracle-ebs/

/oracle-ebs/

category/linux/

/linux/

old-article/

/oracle-ebs-installation/

那就可以這麼作

PHP
add_action( 'template_redirect', function () {

    $redirects = array(
        '/category/oracle/' => '/oracle/',
        '/category/linux/'  => '/linux/',
        '/category/vmware/' => '/vmware/',
    );

    $request_uri = wp_parse_url(
        $_SERVER['REQUEST_URI'],
        PHP_URL_PATH
    );

    // 正規化結尾 /
    $request_uri = trailingslashit( $request_uri );

    if ( isset( $redirects[ $request_uri ] ) ) {

        wp_safe_redirect(
            home_url( $redirects[ $request_uri ] ),
            301
        );

        exit;
    }

});

如果舊網址可能有 Query String

例如:

PHP
https://example.com/old-url/?utm_source=facebook

上述程式使用:

PHP
wp_parse_url(
    $_SERVER['REQUEST_URI'],
    PHP_URL_PATH
);

所以實際比對的仍然是:

PHP
/old-url/

不會受到後面參數的影響:

PHP
?utm_source=facebook

301 還是 302?

如果是永久改網址:

PHP
wp_safe_redirect( $url, 301 );

如果只是暫時轉向:

PHP
wp_safe_redirect( $url, 302 );

SEO 網站通常使用 301。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *