總算買了新網域

原本用的 tsaiid.idv.tw 其實不是個什麼理想的網域,名字太長、.idv 沒什麼代表意義⋯⋯但每次想到要換新的網址,卻又有點捨不得舊的已經用了這麼多年,另外一個考量的點是現在 Google Apps 也沒辦法免費代管,不能制定特殊的 email address,新的網域似乎又少了點吸引力。

本來只是在查 github.io 要怎麼用,後來又想要自己去申請一個 .io 的網址,在這篇教學文中發現 Domainr 這個服務,輸入一些關鍵字後,會建議一些可能可以使用的 domain,雖然我常用的 id: tsai.id 不能申請(.id 目前不開放頂級域名),退而求其次,我名字的縮寫 tsai.it 是 available 的,就買了吧!投資自己才是最重要的啊~

Trustee Service

.it 的域名規定要是歐盟的居民才能夠申請,如果不是的話,要透過一個所謂 trustee service 的服務來當作聯絡的中間人。

GoDaddy 對於 .it 網域的申請有一些說明

Individual and juridical persons residing in or belonging to a EU Member State can register .it domain names. All others can use our trustee service to register a .it domain.

The trustee helps you meet the residency requirement and is a third-party vendor. If someone contacts the trustee with an issue regarding your domain name, the trustee contacts us, and then we contact you.

簡而言之,就是讓當地的網域註冊機關可以聯絡得到你的一種服務。規定那麼多,只好再被多剝一層皮了。

價格

GoDaddy 101domain Europe Registry
年費 14.99 19.95 49 (EUR)
Trustee Service 19.99 7.56 0
Total 34.98 27.51 49 (EUR)

一開始到 GoDaddy 去找,看到 14.99 的價格還爽了一下(和原本 .idv.tw 網域價差不會太大),準備要結賬時才跳出一個訊息說還要額外加上 Trustee Service 的費用(似乎不能拆開購買),這樣加一加就不那麼吸引人了。

網路上一些討論串提到 101domain 提供的 trustee service 最便宜,只要 7.56 USD/year,不過他的 domain 比較貴一些,要 19.95 USD/year,但總價還是比 GoDaddy 便宜一些,換算台幣大約是 825 元/年,雖然還是貴了點,但為了一個爽字,還是敗下去了啦!

就當我付款後,GoDaddy 寄了一封折扣信來,30% off, 這樣總價變成 $24.486,不過已經來不及了,明年有機會再來 transfer 還是怎樣吧。^^a

其實 Trustee Service 的費用也差蠻多的,還有高達 125 USD/year 的!嘖嘖~

轉網址

買好網址後,最痛苦的莫過於轉網址這事了,所有搜尋引擎的資料都要重新 update。

目前主力的網站放在 blog 系統,先把 Apache 裡新的 VirtualHost 設好,然後在舊網址底下設 301 Moved Permanently,(順便偷偷把 Permalink 結構也稍微改了一下,多加了 archives 這個目錄):

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^tsai.it$ [NC]
RewriteRule ^(\d.*)$ http://tsai.it/archives/$1 [L,R=301]
RewriteRule ^(.*)$ http://tsai.it/$1 [L,R=301]
</IfModule>

理論上,如果舊的網址沒有移除,從新舊網址都可以連到原先的頁面,慢慢的搜尋引擎也會 update 自己的資料。

如果有裝 cache 的 plugin, 要把 cache data flush 掉才會生效。

更新 db 裡的 content

除了把原本的連結用轉址的方式避免失效外,許多內文中自我引用的連結也要更改,這個部分就比較複雜恐怖一些,最好先把 mysql database 備份一下,以免不測。

這篇 Change and Update WordPress URLS in Database When Site is Moved to new Host 提供了幾個簡單的 SQL 指令可以 update db,但因為我有改變 Permalink 結構,所以必須要搭配 Regular Expression 來做 replace,因此只執行了部分指令:

1
2
3
UPDATE wp_options SET option_value = replace(option_value, 'http://OLDURL', 'http://NEWURL') WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts SET guid = replace(guid, 'http://OLDURL','http://NEWURL');
UPDATE wp_postmeta SET meta_value = replace(meta_value,'http://OLDURL','http://NEWURL');

SQL 語法本身並沒有提供 Regular Expression Replace,參考了這位仁兄提供的方法,先把 db dump 出來改一改再 import 回去:

$ mysqldump -u WP_USER -p WP_DBNAME wp_posts > posts.sql
$ find posts.sql -type f -exec sed -i 's/http:\/\/tsai\.it\/\([[:digit:]]\)/http:\/\/tsai.it\/archives\/\1/g' {} \;
$ mysql -u WP_USER -p WP_DBNAME < posts.sql
$ mysqldump -u WP_USER -p WP_DBNAME wp_comments > comments.sql
$ find comments.sql  -type f -exec sed -i 's/http:\/\/blog\.tsaiid\.idv\.tw\//http:\/\/tsai.it\//g' {} \;
$ find comments.sql  -type f -exec sed -i 's/http:\/\/tsai\.it\/\([[:digit:]]\)/http:\/\/tsai.it\/archives\/\1/g' {} \;
$ mysql -u WP_USER -p WP_DBNAME < comments.sql

(註:Synology NAS 並沒有把 mysql 工具程式加入 $PATH 中,其位置在 /usr/syno/mysql/bin)

其實過去 Permalink 結構曾經修改多次,不太可能靠單純的 regex replace 就把所有的 link 修正,或許哪天有看到再手動改吧!爛掉的連結就隨緣啦~

Email Hosting

買新網域還有一個目的就是想要弄一個帥一點的 email address 來建立個人品牌,但如前所述,Google Apps 現在要收錢了(早知道去年取消免費之前就應該買啦!),即使只有我一個人用,一年還是要額外開銷 50 USD (約 1500 NTD),成本也不低,所以一開始打算也在 NAS 上面跑 Mail Server,程式是跑得起來,但會因為沒有設定 ip 反解,而被其他 mail server 拒絕往來,這真的是沒辦法了,目前的 ISP 也不提供 ip 反解的申請(目前只有 HiNet, SeedNet 提供這樣的申請),這條路等於是斷了。

後來在 The Best Places to Host Your Email With Your Own Domain 看到微軟的 Outlook.com 也有提供免費的 email hosting(上限 50 個帳號,但會有廣告),立馬趕緊去申請。

話說 Outlook.com 的使用者介面弄得跟 Windows 8 一樣,一整個勾起我不良的回憶,不過其它收發信件的功能還算容易上手。

我本來打算把所有的 email 全部自動轉寄到 gmail 上去統合,但這個功能預設是關閉的,必須先經過電話或簡訊驗證使用者身份後才能開通,但這個認證系統實在很「掉漆」,傳送了十分鐘才收到,等待過程中我還試著改用電話語音驗證,結果半通電話也沒打來。好不容易收到認證碼,也完成認證,結果系統 Sync 又等了十分鐘才算正式完成認證,這麼基本的使用者體驗都做不好,還想跟人家拼?不過看在免費的份上,也只好忍耐了。

期望

畢竟 .it 這個頂級域名是義大利的,降價是不敢期望啦!(話說 .tw 網域還比人家貴是怎樣?)只希望不要哪一天國家政策改變就把我收回去,讓我平平安安的用下去就好了。