tDiary を port forward 越しに使うと一部おかしい
※ 長いんでまた日付を未来にずらしてしまう作戦。
とりあえず日記に書いちゃえメソッド。2.1.4 で確認。
具体的には tdiary.rb の base_url メソッドでの URL の組み立て方の問題と、それの適用範囲の問題。
def base_url
return '' unless @cgi.script_name
if @cgi.https?
port = (@cgi.server_port == 443) ? '' : ':' + @cgi.server_port.to_s
"https://#{ @cgi.server_name }#{ port }#{File::dirname(@cgi.script_name)}/"
else
port = (@cgi.server_port == 80) ? '' : ':' + @cgi.server_port.to_s
"http://#{ @cgi.server_name }#{ port }#{File::dirname(@cgi.script_name)}/"
end.sub(%r|/+$|, '/')
end
別段おかしなところはなさそうに見えるんだけど、port forward してると期待通りに動かない。
例えば localhost 8080 からサーバの 80 に飛ばしているとき、サーバでは 80 に繋がっているわけだから、8080 は無視されてしまう。これを基準に URL を組み立てている RSS auto-discovery や image プラグインは http://
対応としてはヘッダの Host フィールドを使う。http://
- base_url は Host を利用できるなら利用し、できない場合は上の処理
- そのうえで、極力使わない
- makerss.rb 独自か、あるいは日記の設置 URI という値を用意して、そこに正規の絶対 URI を保存する
って感じで対処するのがいいんだろか。
ちなみに今回自分がどうしたかというと、
@options['image.url']
を設定して http://
あ。
自画自賛で思いついたけど、日記の設置 URI って値はあったら嬉しいかも。例えば permalink もこれを使うようにできればいい。
なんでかっていうと、このサイトは現在 aligach.net だけれども、www.aligach.net でもアクセスでき、そっちでアクセスしちゃうと TrackBack の送信先とかも www 付きのものになっちゃう。でも複数の URL でアクセスできるってことと permalink が複数あるってのは意味が違うと思うんだよな。できれば permalink は常に aligach.net になってほしい。
そういうときに便利かなと。