暫時解決 Permalink 產生的 Error 310

在 WordPress 中,如果要建立多頁面的文章,可以使用

<!--nextpage-->

來做分隔。

昨天意外的發現,在 rewrite 後的 permalink 中,page 會產生

Error 310 (net::ERR_TOO_MANY_REDIRECTS)

的錯誤。

本來以為可能是 rewrite 的 rule 寫錯,但反覆測試後,發現居然是 url 後跟著的 ‘/’ 惹的禍。例如:

http://tsai.it/archives/2012/04/fujifilm-gf670/2/ # Error 310
http://tsai.it/archives/2012/04/fujifilm-gf670/2  # OK.

原本以為可以從 theme 裡面的 wp_page_link 著手,但沒有 parameter 可以修改 url 尾端的 ‘/’,這樣就麻煩了,如果需要去動 wp-include 裡的 source, 到時候每一次系統 upgrade 就要改一次,但目前網路上主流的解法就是改 source:在 wp-includes/post-template.php 找到 function _wp_link_page (紅字為新增部份) (目前系統版本:WP 3.4.1)

$url = trailingslashit(get_permalink()) . user_trailingslashit("$wp_rewrite->pagination_base/?page=" . $i, 'single_paged');
$url = trailingslashit(get_permalink()) . user_trailingslashit("?page=". $i, 'single_paged');

從 code 來看,應該是”錯誤的判斷 trailslash” 所造成,但最近實在沒那個時間心力來研究,只好先將就著用了。

2012.09.06

Leave a Reply