WordPress 開啟 Debug 偵錯模式,以便檢查出錯誤信息。看到博客有幾處錯誤回報,在 WordPress Support 技術支援網站,找到相關的問題,但都沒有得到官方有效解決方法。
這個問題似乎在 8 年前已經有人反饋給WP官方人員,直到現在都沒有高手去 Fix Bugs 這個問題。
官方反饋的主題:
在 error.log 或 debug.log 錯誤信息文件:
PHP Warning: Undefined array key "path" in /home/xxx/public_html/wp-includes/canonical.php on line 392
PHP Warning: Undefined array key "path" in /home/xxx/public_html/wp-includes/canonical.php on line 590
PHP Warning: Undefined array key "path" in /home/xxx/public_html/wp-includes/canonical.php on line 606
PHP Warning: Undefined array key "path" in /home/xxx/public_html/wp-includes/canonical.php on line 618
wp-includes/canonical.php 文件 594 行:
if ( empty( $user_home['path'] ) ) {
$user_home['path'] = '/';
}
wp-includes/canonical.php 文件 606 行:
$redirect['path'] = preg_replace( '|/' . preg_quote( $wp_rewrite->index, '|' ) . '/*?$|', '/', $redirect['path'] );
Canonical.php 392 590 606 問題原因:
這是在「主頁 / 首頁」的分頁造成的。如果第一頁的分頁若是有用戶以「https://www.domain.com/page/1」訪問頁面,就會回報錯誤。提示如下:
經過深入檢查,是由於 WordPress 固定連結,使用的類似「/%category%/%postname%」自定義結構的結束沒有斜杠,而造成的 WordPress 報錯,而使用「/%category%/%postname%/」這樣結尾有斜杠的結構則不會報錯。通過 Google 查詢發現有一堆的網站有這樣的錯誤提示,大家都慒然不知。
解決方法一:
RewriteEngine On
RewriteRule ^page/1$ /? [L,R=301]
RewriteRule ^page/1/ /? [L,R=301]
或
RewriteEngine On
Redirect 301 /page/1 https://www.moonlol.com
Redirect 301 /page/1/ https://www.moonlol.com
使用說明:在根目錄新增一份 .htaccess 文件將以上內容放進去。
注意:必須放在「#BEGIN WordPress」連結規則的前面才可。請看圖片▼
解決方法二:
//301 跳轉 for canonical.php 392 590 606
add_action( 'template_redirect', 'fanly_basic_redirects' );
function fanly_basic_redirects() {
if( is_home() && get_query_var('paged')===1 ) {//主頁 page/1 報錯
wp_redirect( home_url(), 301 );
die;
}
}
使用方法:把這段代碼放置到當前所用的 WordPress 主題的 functions.php 文件中即可。
解決原理:運用 301 重定向,跳轉當 WordPress 識別到是通過 WordPress 主頁/page/1 訪問的時候就直接跳轉到主頁。
Canonical.php 594 問題:
PHP Warning: Undefined array key "path" in /home/xxx/public_html/wp-includes/canonical.php on line 594
Bug fix: 如果經過以上的操作後,仍然出現此問題。請切換回官方的佈景主題。