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=facebook301 還是 302?
如果是永久改網址:
PHP
wp_safe_redirect( $url, 301 );如果只是暫時轉向:
PHP
wp_safe_redirect( $url, 302 );SEO 網站通常使用 301。



