nmtysh.log

Tech系のネタや日々の独り言などを書いています。

try_filesが上手く動かない……

if $http_cookie と try_files の相性が悪い。
書き方なのかな?

nginxは 1.7.x か 1.8.x だったはず。

location /wp {
  (略)
  if ($http_cookie ~ "^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$") {
    set $no_cache 1;
  }
  (略)
  try_files $uri $uri/ /index.php?q=$uri&$args;
  location ~ \.php$ {
    (略)
  }
}

こんな感じに書くと、WordPressにログインした状態で記事ページが404になってしまいました。

  • 非ログイン状態だと問題なし。
  • $http_cookie のブロックをコメントアウトすると、ログイン状態でも記事が表示できる。
  • set~ の部分のみコメントアウトしても404。
  • 他のifブロックは問題なし。

エラーログを見るとtry_filesが効いていないようで、/wp/2016/04/12/hello/index.phpみたいなuriでファイルを探すけど、
当然無いので404になると。

ちょっと時間を作って色々試したい。
その前にバージョンを上げるかな……