Tomoya's Blog (ja)

Just a blog, nothing fancy

ErgoDoxにVim風の操作を覚えさせてみた

この記事は CAMPHOR- Advent Calendar 2017 12日目の記事です.


ある日,京都市内某所 で「一度Vimを使ってしまうと普通のエディタには戻れなさそう」なんて話があったが,僕も実はそのような人に含まれてしまう.Vim以外の文字入力画面でついVimのコマンドを打ってしまい,その都度「ああ,Vimじゃなかった?」と思うのである.
そこで,社会復帰を目指して Vimm以外で文字入力するときの快適性を追い求めて,少し前に に買ったErgoDox EZに,ファームウェアの限界までVimキーバインドに対応するキープレスを吐かせてみた.

続きを読む: 「ErgoDoxにVim風の操作を覚えさせてみた」

tomoyat1

WordPressをnginxリバースプロキシ下で動かしたら、/wp-json/以下へのアクセスが404になって困った話

環境

サーバーは次のような環境。

  • FreeBSD 11.0-RELEASE-p3
  • nginx/1.10.2
  • PHP 7.0.13 (fpm-fcgi)
  • WordPress 4.6.1
    なお、nginxはphp-fpmにリクエストを投げるものと、そのnginxに対してリバースプロキシの働きをするものと2つ動いている。(余談だが、この2つのnginxはそれぞれ別Jailで動かしている)

問題

Markdown記法目当てでJetpackをインストールし、その機能を有効化するときのことだった。JSONがどうこうというエラーを吐かれて機能の有効化がコケるのでサーバーログを見ると、/wp-json/*へのアクセスがことごとく404になっていた。Wordpressのルートディレクトリを見ても、そもそもwp-jsonなんてディレクトリがない。

調べていると、WordpressのJSON APIの機能を使うにはPretty Permalinkが正しく動いていないとダメだということが分かった。確かにWordpress側の設定では有効化されているのになぜか正しく動かない。さらに調べると、問題はnginxの設定にあることが分かった。

解決法


location / {
    ...
    index index.php index.html;
    try_files $uri $uri/ /index.php?$args; //この行を追加。
    ...
}

nginxは/wp-json/*へのリクエストに対応するためにまずドキュメントルート (今はWordpressのインストール先) を探すのだが、特に何も指定しないとドキュメントルート内に/wp-json/が存在しないのでそのまま諦めて404を返してしまう。だが本来は、/wp-json/*へのリクエストはWordpressのindex.phpに渡して、PHPでレスポンスを生成して返すべきである。追加した行は指定された場所にファイルが存在しなければindex.phpにそのパスを引数として渡すよう内部でリダイレクトがかかるように指定するものである。こうするとうまく動くみたい。

なお、単純にPretty Permalinkを使うときにも必要なのだが、変更を加えなくても動いていたのが不思議である。実は記事のパスが/index.php/2016/11/...になっていたとかだろうか…

参考文献

WordPress permalinks

tomoyat1

Hello world!

Hello, World!!

技術ネタを中心に書くブログを始めることにした。幅広く書くだろうが、個人的な趣味により低レイヤー寄りのネタが多くなるだろう。

言語 (Language)

現在は日本語のみで書いているが、早急に英語版のブログも用意して英語でも記事も書きたい。
English speakers, an English version of this blog is in the makes. Not that there’s anythig to read (yet).