質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.23%

wordpressをnginx+vagrant+php-fpm+php5.6環境で動かしたら、トップページ以外がNot Foundになる

受付中

回答 3

投稿

  • 評価
  • クリップ 0
  • VIEW 2,170

takehiro_pink

score 29

環境
Nginx1.7.8
WordPress4.0.1
PHP5.6.3
php-fpm5.6.3
mysql5.5.40

内容
nginxでwordpressを動かすと、トップページは正常に動く。adminページも正常に動く。
しかし、/newsや/contentsなどのスラッグがつくととたんに動かなくなる。
これは、オリジナルテーマでなく、デフォルトテーマでも起こったので、おそらくnginxが関連しているのだと思われるが、どういった記述が必要なのかがわからないため質問させていただきました。

些細な情報でもいいので教えてください
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

+1

nginx+WordPressの日本語解説記事はif使って読みづらい設定のコピペが多くて困りますね。
NginxのWikiの説明を参考に設定してみては? 
WordPress - Nginx Commutiny

 if (!-e $request_filename) {
 rewrite ^/(.+)# /index.php?q=$1 last;
 break;
 }

この部分はtry_filesディレクティブを使えばすっきり書けます。
 try_files $uri $uri/ /index.php?$args;

# This is cool because no php is touched for static content. 
# include the "?$args" part so non-default permalinks doesn't break when using query string
と注釈があるのでお困りの不具合も直るんじゃないかなと。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

nginx.conf やそこから include している設定ファイルでどのように設定されてますか?
nginx のエラーログ(/var/log/nginx/error.log など)には何か記録されていませんでしょうか。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2014/12/17 15:06

    以下default.conf
    server {
    listen 80;
    server_name localhost;

    #charset koi8-r;
    access_log /var/log/nginx/log/host.access.log main;

    location / {
    root /var/www/dev;
    index index.php index.html index.htm;
    if (!-e $request_filename) {
    rewrite ^/(.+)# /index.php?q=$1 last;
    break;
    }
    }

    #error_page 404 /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
    root /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    # proxy_pass http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
    # root html;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
    fastcgi_param SCRIPT_FILENAME /var/www/dev$fastcgi_script_name;
    include fastcgi_params;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    # deny all;
    #}
    }

    -------------------------
    以下アクセスログ
    2014/12/15 23:42:40 [error] 3715#0: *5 open() "/var/www/dev/mysite/news" failed (2: No such file or directory), client: 192.168.33.1, server: localhost, request: "GET /mysite/news HTTP/1.1", host: "centos6", referrer: "http://centos6/mysite/"
    2014/12/17 05:54:04 [emerg] 21713#0: open() "/var/log/nginx/log/host.access.log" failed (2: No such file or directory)
    2014/12/17 05:56:08 [error] 21740#0: *1 open() "/var/www/dev/mysite/news" failed (2: No such file or directory), client: 192.168.33.1, server: localhost, request: "GET /mysite/news HTTP/1.1", host: "centos6"
    2014/12/17 05:57:18 [error] 21740#0: *3 open() "/var/www/dev/mysite/news" failed (2: No such file or directory), client: 192.168.33.1, server: localhost, request: "GET /mysite/news HTTP/1.1", host: "centos6"
    2014/12/17 06:02:16 [error] 21789#0: *1 open() "/var/www/dev/mysite/news" failed (2: No such file or directory), client: 192.168.33.1, server: localhost, request: "GET /mysite/news HTTP/1.1", host: "centos6", referrer: "http://centos6/mysite/"
    2014/12/17 06:02:19 [error] 21789#0: *1 open() "/var/www/dev/mysite/news" failed (2: No such file or directory), client: 192.168.33.1, server: localhost, request: "GET /mysite/news HTTP/1.1", host: "centos6", referrer: "http://centos6/mysite/"
    2014/12/17 06:02:32 [error] 21823#0: *1 open() "/var/www/dev/mysite/news" failed (2: No such file or directory), client: 192.168.33.1, server: localhost, request: "GET /mysite/news HTTP/1.1", host: "centos6", referrer: "http://centos6/mysite/"
    2014/12/17 06:02:39 [error] 21823#0: *1 open() "/var/www/dev/mysite/contact" failed (2: No such file or directory), client: 192.168.33.1, server: localhost, request: "GET /mysite/contact HTTP/1.1", host: "centos6", referrer: "http://centos6/mysite/"
    2014/12/17 06:03:05 [error] 21823#0: *1 open() "/var/www/dev/mysite/news" failed (2: No such file or directory), client: 192.168.33.1, server: localhost, request: "GET /mysite/news HTTP/1.1", host: "centos6", referrer: "http://centos6/mysite/"
    2014/12/17 06:04:43 [error] 21823#0: *15 open() "/var/www/dev/mysite/news" failed (2: No such file or directory), client: 192.168.33.1, server: localhost, request: "GET /mysite/news HTTP/1.1", host: "centos6", referrer: "http://centos6/mysite/"

    --------------
    特に変な設定はしていないです。

    キャンセル

0

Typo なのかもしれませんが、
rewrite ^/(.+)# /index.php?q=$1 last;

rewrite ^/(.+)$ /index.php?q=$1 last;
ではないでしょうか。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2014/12/17 23:39

    rewrite 箇所に着目しているのですが、以下の設定を追加して rewrite が想定どおりの動作となっているか確認すると良いと思います。

    location / {
    (略)
    rewrite_log on;
    error_log /var/log/nginx/rewrite.log notice;
    (略)
    }

    rewrite ではなく、直接 /index.php?q=news などは正常に動作するのですよね?

    キャンセル

  • 2014/12/18 04:15

    /index.php?q=news
    とすると、最初の投稿が表示されます。

    キャンセル

  • 2014/12/18 10:16

    error.log を見直すと、/mysite/news にアクセスしているようですが、
    rewrite されると /index.php?q=mysite/news になります。
    これは意図したとおりでしょうか?

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.23%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る