祂讓你看得到可是吃不到,吃得到可是又不准你吞下去。

    —電影,< 魔鬼代言人>

因為要搬家的緣故,在DK長輩的加持和幫忙之下終於搞定了。不過那天DK長輩看著綠島上的網頁說:

    「你最好設個htaccess,不過windows上面不能有以點開頭的檔案,你可以把它換成_(underline)開頭的檔案。」
    「有喔」我說,「你看在裝WP的時候就會有.htaccess了,雖然你不能建一個,可是可以用copy的方式作出來。」

反正windows就是這樣,很多事情可以做,但是你乖乖循他的管道做,那就是不行。反正這是個懲罰長輩和正常使用者的世界。就像那天DK長輩好不容易把windows上的WP搬到un*ix上之後,我問他為什麼這樣可以work了?長輩說「不用懂,也不需要問。反正它就是能動了。」

好呀,長輩這麼說,那我就從善如流,把.htaccess改成_htaccess。

兩天後,因為現在用的connection theme它沒有default的 archive/archives.php 的頁面,所以我就必須自己做一個。可是用別人做的東西最大的麻煩就是你很難知道設計者當初的構想和架構是什麼,所以在某個網頁的建議之下(已經不知道怎麼連到的),我去看了Creating an Archive Index這篇文章以及這篇Pages。照著做之後,我想一切應該都會美好地開始,錯了,虛幻的惡夢就開始。

因為我發現我改的所有Page通通都連不到。我第一個想法是可能在設定custom field的時候發生問題了,所以我可能需要看一下是不是可以改回來,但在WP option裡面找了老半天還是沒有。我只好請出PhpMyAdmin來用,透過un*ix和windows 的資料比對,我應該就可以找到問題所在。但不幸地這個東西在 un*ix 和 Windows 上的行為也不太一樣,當然如果你用default name 是OK,如果你和我一樣會喜歡改目錄位置的話就會出事。另外在windows上和它一起搭配的 php extension的設定有點問題,我不知道怎麼修改它,這應該是windows上的php做得很不好的地方,因為我踩的地雷到目前為止幾乎都是php windows version弄出來的。

好吧,支線任務的phpMyAdmin的問題終於解決之後,我認真地比對兩個資料差異,發現… 一點都沒問題。於是我就想可能是自己對資料庫不熟,好吧,我把兩個換過來試試看總行了吧?我先把綠島上的資料庫匯出來,叫了 cmd 之後執行:

mysqldump –all-database -u myblogusername -p > backup.sql

然後把 un*ix 上的也照樣備份出來。不過因為我在windows和un*ix上面的資料庫用的名字不一樣,所以要修改.sql裡面的內容把這兩行改了一下(如果權限不足的話,這樣用可能會有問題,若發生這類情況請把這兩行砍掉):

CREATE DATABASE /*!32312 IF NOT EXISTS*/ `wordpress` /*!40100 DEFAULT CHARACTER SET utf8 */;

USE `wordpress`;

又為了把亂七八糟的問題發生可能降到最低,我又用windows上的Mysql備份程式又另外備了一份。備完後就把 wordpress 的資料庫砍掉,然後把 un*ix 上面的資料庫倒回來:

mysql -u root -p < unixbackup.sql

幸運的是從 un*ix上倒資料庫到 windows 上完全沒問題,但是反過來那問題就大了。

開始回到主線任務,我又寫了一個Page,但是不加任何 custom field,結果新的 Page 還是會發生連不到的情況。我在想資料庫已經換過來了,唯一還有差的地方會是什麼?是我裝的那些 plugin 嗎?這件事情簡單,就從 un*ix 上抓 plugin 的目錄覆蓋過去(當然別忘了windows這邊也要先備份),結果發現… 還是不行。

資料庫已經交換過了,所以一定不是資料庫的問題,plugin 也一樣,所以也不會是plugin的問題,那,為什麼 un*ix上可以,但 windows 上不行呢?我開始想網頁的運作方式,…. ,當然愚笨如我是想不出東西來的。我決定這次把整個 WP都換過去。就在倒回去的時候,我發現 .htaccess 的檔案居然不一樣大小,而且 windows 上的 .htaccess 居然很新,比_htaccess還新。這怎麼可能呢?我想這有兩種可能,第一個可能就是我該開的帳號沒開好,所以有人幫我進來管機器了。另外一個就是有程式自己修改了。因為那天有DK長輩的加持,所以我排除了第一種可能,第二種可能就很有趣了,哪支程式會這樣搞?當下就全文檢索 .htaccess,果然在 wordpress/wp-admin 下有三個檔案會修改 .htaccess,我把.htaccess改成_htaccess之後所有的問題就都解決了。一個下午就虛耗在這種東西上面,唉。

這件事情告訴我:沒事還是不要亂改東西,除非你和DK長輩一樣強。還有,有時間應該是拿來唸書,不是坐在電腦前面裝plugin踩地雷。

Update: 我想這篇也有一些幫助。

Update: 至於 Redirect 的問題本來我要建一個 index.html ,裡面透過 < meta http-equiv=”refresh” content=”0; url=新的網址” > 來轉,不過DK長輩跟我說透過 .htaccess 的方法比較好,用我原來的方式的話,有的人萬一是直接連網頁的話就會連不到,所以最好是用 .htaccess 裡面寫像這樣:

Redirect /別人會連進來的目錄/ 新的網址

像我的話可能就會寫成

Redirect /wp/ http://blake.yichi.org/wp/