Help us understand the problem. What is going on with this article?

nginxでwordpressのパーマリンクをデフォルト以外に対応する

More than 3 years have passed since last update.

パーマリンク対応

wordpressのパーマリンクを変更すると、RestfulAPIみたいに、ディレクトリ階層のURLに変更することができます。

Screen Shot 2015-04-25 at 02.53.34.png

ngix + php−fpmでは、nginx側でURLを処理して適切にphp-fpmへ渡してあげないといけません。(JavaEEのようにコンテキストを持たないので。。。)

nginx本家のドキュメントに説明があったので、それを元に設定してみます。

nginx.conf
中略…

server {

中略…
# URL デフォルトのリンクから変更した場合、URLでトライて、見つからないソースは、@wordpressロケーションとして飛ばします。
location / {
    try_files $uri $uri/ @wordpress;
}
# index.php など、通常の.phpでのアクセス。見つからなければ@wordpressロケーションとして飛ばします。
location ~ \.php$ {
    try_files $uri @wordpress;
    fastcgi_pass …;
    fastcgi_param SCRIPT_FILENAME /path/to$fastcgi_script_name;
    その他fastcgiの設定…
}

# 階層型URLのパーマリンクでアクセスされた場合、(.phpで実行されなかった場合)wordpressのトップページのindex.phpへ投げてしまいます。
location @wordpress {
    fastcgi_pass …;

    fastcgi_param SCRIPT_FILENAME /path/to/index.php;

    その他fastcgiの設定…
}

実装例

nginx.conf
中略

server {
    listen       80;
    server_name  yourhost.com;
    root         /usr/share/nginx/wordpress;
    index        index.php

    charset utf-8;

    location / {
        try_files $uri $uri/ @wordpress;
    }

    location ~ \.php$ {
        try_files $uri @wordpress;
        fastcgi_index index.php;
        fastcgi_split_path_info ^(.+\.php)(.*)$;
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME  /usr/share/nginx/wordpress$fastcgi_script_name;
        include       fastcgi_params;
    }

    location @wordpress {
        fastcgi_index index.php;
        fastcgi_split_path_info ^(.+\.php)(.*)$;
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME  /usr/share/nginx/wordpress/index.php;
        include       fastcgi_params;
    }

    error_page 404 /404.html;
    location = /40x.html {
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
    }
}

中略

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした