

WordPressをnginxで動かしているのですが、固定ページの表示でハマってしまったので質問です。

以下（①）のnginx.conf（一部）から、

[code]

        location / {
            index index.php
            try_files $uri $uri/ /index.php?q=$uri&$args;
    
            location ~* /wp-config.php {
                deny all;
            }
    
            location ~ \.php$ {
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html/$fastcgi_script_name;
                fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/wordpress/$fastcgi_script_name;
                include        /etc/nginx/fastcgi_params;
            }
        }
    
[/code]

以下（②）の設定に変更しました。

[code]

        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;
        }
    
[/code]

しかし、①の設定では固定ページが404で表示されず、②の設定ではTOPページやダッシュボードが403で表示されません。

nginx.confをどのように設定すれば全てのページが表示されるのかわからず、途方にくれています。  
わかる方がいらっしゃいましたら、よろしくお願いします。


CC BY-SA 3.0
2017-06-16T01:31:27.110
35623
2017-07-21T18:44:08.850
23824
question
wordpress nginx
wordpressを使用する際のnginxの設定


指定されたファイル、フォルダーを見つけられない時は、wordpressがインストールされているフォルダーのindex.phpへリダイレクトすればとりあえず固定ページを表示できます。  
以下に設定例を書きますが、<https://wpdocs.osdn.jp/Nginx> を読まれることをすすめます。

前提条件：nginx.confはデフォルト設定で フォルダー
/wordpressにインストールされていてwordpressへログインできていて、パーマリンク設定は、数字ベースに変更している  
環境での一番簡易な設定方法は

[code]

    location / {
           index index.html index.php;
           try_files $uri $uri/ /wordpress/index.php?$args;
    }
    
[/code]

> try_files $uri $uri/ /wordpress/index.php?$args;

をルート定義に１行追加するればよいです。

上記で表示されたら①の定義を見直すと表示されるかもしれません。  
fastcgi_param SCRIPT_FILENAME /usr/share/nginx/wordpress/$fastcgi_script_name;  
で指定しているドキュメントルートパス(/usr/share/nginx/wordpress/)は誤りがありませんか？  
include fastcgi_params;の中に、fastcgi_param SCRIPT_FILENAME
が定義されていてSCRIPT_FILENAMEが上書きされているかもしれませんのでincludeの位置をfastcgi_index
index.php;の次に移したらどうでしょう。


CC BY-SA 3.0
2017-06-16T07:49:24.500
35634
2017-06-16T12:15:48.363
2017-06-16T12:15:48.363
22793
22793
35623
answer