こんばんは、ころすけ(@wg_koro)です。
iPhoneアプリ「RedminePM」と、自宅のRedmineを連携させようとしたんです。そしたら何故かエラーが出る。REST APIも有効にしているし、XMLも読み込みできる。でもiPhoneアプリと連携できない。何故?
nginxの設定間違えてた
手っ取り早く言うと、nginxの設定間違いでした。静的ファイル(CSS,js,jpg..etc)はnginxが直接返すようにしていたんですが、ここの設定にミスがありました。
アクセスログをたどると、プロジェクト一覧を表示するAPI(下記)で404エラーが返ってました。あれ?
/projects.json?key=xxx
JSONなのにpublicディレクトリを見に行こうとしてる。静的ファイル扱いされてる。
…あ。
[shell]
# 間違い
location ~ .*\.(jpg|JPG|gif|GIF|png|PNG|swf|SWF|css|CSS|js|JS|inc|INC|ico|ICO) {
root /var/www/redmine/public;
index index.html;
expires 30d;
break;
}
[/shell]
# 間違い
location ~ .*\.(jpg|JPG|gif|GIF|png|PNG|swf|SWF|css|CSS|js|JS|inc|INC|ico|ICO) {
root /var/www/redmine/public;
index index.html;
expires 30d;
break;
}
[/shell]
[shell]
# 正解!
location ~ .*\.(jpg|JPG|gif|GIF|png|PNG|swf|SWF|css|CSS|js|JS|inc|INC|ico|ICO)$$ {
root /var/www/redmine/public;
index index.html;
expires 30d;
break;
}
[/shell]
# 正解!
location ~ .*\.(jpg|JPG|gif|GIF|png|PNG|swf|SWF|css|CSS|js|JS|inc|INC|ico|ICO)$$ {
root /var/www/redmine/public;
index index.html;
expires 30d;
break;
}
[/shell]
違いが分かりますか?
location ~ .*.(jpg…) の一番後ろに「$」が入っていない。
これを入れていないと「.js」はもちろん、「.json」もHITしちゃいます。おうふ orz
ま、何はともあれこれでOK。無事にiPhoneアプリと連携できるようになりました。REST APIを使った連携で上手くいかない場合、このあたりをお調べ下さい。
ぷぷっ(ˆωˆ )
正解と間違いの違いが全く無いように見える・・・。
>>location ~ .*.(jpg…) の一番後ろに「$」が入っていない。
とありますが、正解の方にも入っていないですよお
失礼しました!
WordPressのコードハイライトツールが「$」の文字をエスケープしないと表示しない仕様だったようです…。修正しました。