https://blog.adachin.me/?p=5515
覚えているだろうか。
あれから一ヶ月経ってしまい放置していました。。
nginxからH2Oに移行したのですが、
うまくいっていないところが以下のように旧ドメインから新ドメインのredirect(https)である。
https://blog.adachin.me/?p=2131
本日神が降り、うまくいったのでブログします。
■mruby.handler 301 redirect from www to non-www domain #747
https://github.com/h2o/h2o/issues/747
ググるとやりたいこととしてはまさにこれだと思い、自分もmruby使って以下のように作ってみた。
1 2 3 4 5 6 7 8 9 |
$ cat mruby.handler.rb mruby.handler: | Proc.new do |env| if /adachin.server-on.net\.?$/.match(env["HTTP_HOST"]) [301, { "Location" => "https://blog.adachin.me/" + env["PATH_INFO"] }, [] ]; else [399, {}, []]; end end |
がしかし、まったくうまくいかない。謎のエラーとの戦いで、
これはお手上げレベル。
開発者の奥さんに質問しようと思いましたw
・nginxの場合
1 2 3 4 5 |
server { listen 443; ssl on; server_name adachin.server-on.net; rewrite ^ https://blog.adachin.me/$request_uri? permanent; |
上記のようにrewriteをぶち込めば解決できます。
■改めてh2o.confを見直してみた
出来ていないところがあった。。
https://blog.adachin.me
にアクセスすると
https://blog.adachin.me
になっていた。
これか!?
・blog.adachin.me.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
hosts: "adachin.server-on.net:80": listen: port: 80 paths: "/": redirect: https://blog.adachin.me "/wordpress": redirect: https://blog.adachin.me "adachin.server-on.net:443": listen: port: 443 ssl: certificate-file: /etc/letsencrypt/live/adachin.server-on.net/fullchain.pem key-file: /etc/letsencrypt/live/adachin.server-on.net/privkey.pem paths: "/": redirect: https://blog.adachin.me "/wordpress": redirect: https://blog.adachin.me #これが入っていなかった |
20行目の
/wordpressのパスにアクセスする時にredirect:の設定が入っていなかった。
とりあえずぶち込んだところ。。
解決!
ちゃんとパーマリンクでのrewriteも出来ている!
設定これだけ!?すごいw
■まとめ
時間かかってしまいましたが、
h2oのredirectはこんなに簡単なんですね。。
ansibleで管理してるので参考に!
https://github.com/RVIRUS0817/ansible_blog.adachin.me/tree/master/roles/h2o/files/conf.d
0件のコメント