之前有一個 wordpress 架站的案子,佈景主題使用 Newspaper ,最近遇到發現 tag 點進去頁面會一律顯示 403 ,找問題找半天想說到底卡在哪裡。如果預設網址就沒有問題,但只要改成自定網址結構,就會出事。但這時候我原本以為是不是 .htaccess 有什麼問題。後來想說是不是 plugin 相衝,但問題是我安裝的是跟佈景主題相關的必要 plugin,如果不啟用就會直接破版,所以也無法把 plugin 移除測試。
後來又找了幾個方向,想說是不是網址編碼有問題?因為我發現自定網址把單篇文章改成中文網址的時候,也會顯示403,如果是純英數沒有中文的網址就正常。找到早期(十幾年前) wordpress 確實對非拉丁語系的網址會有把網址截短的問題,但看起來又好像跟我遇到的問題不太一樣。因為我遇到的問題不是網址編碼被截斷,而是網址正常但頁面 403。而且我的中文網址經編碼後並沒有超過系統預設的長度。
後來在外國網站找到這篇:How do I do ‘non-English characters in a WordPress URL cause 404 error’ in WordPress? 我覺得這篇是關於非英文語系頁面網址遇到錯誤整理的最詳細的一篇。其實他提的可能性跟前面我找的資料差不多,但有提到佈景主題或外掛都有可能跟自定網址衝突。我才用我自己的部落格測試,發現一樣的網址結構設定,我的部落格就是正常的,我的部落格也有安裝別的付費佈景主題。所以這樣比較下來那應該就是佈景主題(或相關外掛)跟自定中文網址相衝突。
Newspaper 必要安裝的外掛有兩個:tagDiv Composer , tagDiv Cloud Library。因為必要安裝,不裝就沒辦法自定頁面設定,所以對我來說他就是這個佈景主題的一部分。總的來說就是 Newspaper 佈景主題不支援中文網址。上面那篇文章強調僅能使用 ASCII 編碼,後來測試唯一解法是一個一個去把中文tag的代稱改成純英文,不要用預設的中文。只要讓網址只使用英文數字,網址就可以正常顯示。也就是確定 Newspaper 僅能使用符合ASCII 編碼的網址。
我本來以為是一開始架站就這樣。結果我回頭看以前提供給業主的網站使用說明,我裡面就建議要設定標籤,而且當時給的標籤頁網址後面就是中文。代表最早以前一開始架好站時其實是沒問題的。這種中間經歷過 Newspaper 版本大升級,我不太確定是不是反而後來的版本衝到。但為了系統安全也不可能去降級。只能說就是遇到了只能這樣…