WordPressのマルチサイト機能で英語ブログ作った

表題の通りなのですが、英語ブログ作りました。これを機にWordPressを捨ててPHPと決別したい欲求を、グッとこらえてWordPressのマルチサイト機能を使ってとりあえず書き始めるのを優先しました。

あと、合わせてこのブログも2007年のデフォルトテーマから2012年のデフォルトテーマに変更しています。これもテーマを自作したい欲求をグッとこらえました。ストレス社会です。

手順はこのページを参考にさせてもらいました。現時点ではWordPressが基本的にapacheでの運用を前提としているので、nginxでしかもマルチサイト機能を使うっていう情報がイマイチまとまってないのですが、頑張って設定します。

基本的には上記ページの通りに設定すればいいのですが、下記3点、少しハマりました。

1. マルチサイト機能を有効にすると、パーマネントリンク設定が上書きされる
書いてある通りです。ページ内リンクがことごとく404になってて焦りました。設定 => パーマリンク設定から確認しましょう。元々の設定が分からなくなるのであらかじめメモっておいた方が良いです。僕はカスタムで/%category%/%post_id%/に設定しています。

2. 謎のリダイレクト無限ループ
一部のエントリを表示しようとすると、「This webpage has a redirect loop」というエラーが出てしまう問題が出ました。Nginxのリダイレクト設定がおかしいのかと思って色々弄ってみたものの分からず、根本的に分かってない事があるのかとWordPressのソースを読んでみたりしたのですが分からず、WordPressを捨てかけましたが、ふとNginxのキャッシュを全部消してみたら動くようになりました。どうも変なタイミングでキャッシュが作られていたようです。なおnginxのキャッシュはデフォルトだと/var/log/nginxにあります。

3. nginxの設定ファイルで$uriはホスト名が含まれない
元々nginxのリバースプロキシのproxy_cache_keyは以下のような設定にしていました。

location / {
    ...
    proxy_cache_key     $uri$is_args$args;
	....
}

ところがこの$uriにはドメインが含まれないので、http://taichino.com/とhttp://en.taichino.com/が同じ/として扱われて、どちらかのページしか表示されない状態になりました。そこで次のようにドメイン名を含めるように変更しています。ドメイン名はserver_name中でキャプチャをする必要があります。

...
server {
        server_name ~^(?<domain>.+)$;
		...

        location / {
            ...
            proxy_cache_key     $domain$uri$is_args$args;
			...
        }
		...
}

というわけでようやく英語ブログができました。全然英語書きなれてないので、しばらく練習で色々書いてみようと思います。

あと全然コントロールできないWordPressを早く捨てたい欲求がハンパ無いのですが、それは余生の楽しみに取っておこうかなと。

Leave a Reply

Your email address will not be published. Required fields are marked *