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

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

ただいまの
回答率

90.61%

  • WordPress

    6990questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

  • nginx

    820questions

    nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

nginx環境でのサブディレクトリへのワードプレス設置

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 666

win4834

score 1

GMOのVPSでPLESKを使ってnginx環境で
以下のようなサイトを作ろうとしていますが
パーマリンク構造を変えてしまうと
ワードプレスのトップページしか表示されません。

http://www.example.com/ htmlのサイト設置
http://www.example.com/test1 ワードプレス1設置
http://www.example.com/test2 ワードプレス2設置
http://www.example.com/test3 ワードプレス3設置


パーマリンク設定が標準の/?p=123なら表示されるのですが
/sample-post/のような投稿名だと
404 Not Found・nginxとなってしまいます。

pleaskのApacheとnginxの設定⇒nginx追加ディレクティブの欄に

try_files $uri $uri/ /test1/index.php;

と書いてみましたがダメでした。

多分簡単なコードなのでしょうがわかりませんでしたので
ご教授いただければ助かります。

追記
現在のnginx の設定を質問に追記します

nginx 追加ディレクティブ欄に

 gzip設定

gzip on;
gzip_comp_level 2;
gzip_http_version 1.0;
gzip_proxied any;
gzip_min_length 1100;
gzip_buffers 4 32k;
gzip_types
text/plain
text/html
text/xml
text/css
application/xml
application/xhtml+xml
application/rss+xml
application/atom_xml
application/javascript
application/x-javascript
application/x-httpd-php;
gzip_disable "MSIE [1-6].(?!.*SV1)";
gzip_vary on;

静的ファイルを nginx で直接処理 の欄をONで以下のファイルを設定しています。
ac3 avi bmp bz2 css cue dat doc docx dts eot exe flv gif gz htm  ico img iso jpeg jpg js mkv mp3 mp4 mpeg mpg ogg pdf png ppt pptx qt rar rm svg swf tar tgz ttf txt wav woff woff2 xls xlsx zip

  • 気になる質問をクリップする

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

質問への追記・修正、ベストアンサー選択の依頼

  • CHERRY

    2017/12/12 15:57 編集

    nginx の設定を質問に追記できないでしょうか?

    キャンセル

回答 2

checkベストアンサー

0

nginx の設定は、server { ... } の中が、知りたかったんですけどね...

nginx のテスト環境が、いま手元にないので、テストできていないのですが、nginx.conf の 該当するサブディレクトリの location ディレクティブに以下を追加するとどうなるでしょうか? (最低限の項目しか記載していませんので、現在の記述にあわせて追加してください。)

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

  location ~^/test1/(.+\.php)$ {
    alias /var/www/test1/$1;
    fastcgi_pass  unix:/var/run/php-fpm/php-fpm.sock; (構成によっては 127.0.0.1:9000 かも)
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include      fastcgi_params;
  }

ここまで書いてから思いついたけど、もしかすると

try_files $uri $uri/ /test1/index.php?q=$uri&$args;


に変えるだけで、うごいたりするのかな...

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/12/13 16:00

    ありがとうございます!解決できました!

    } が足りてなかったのを付け足して
    以下をnginx 追加ディレクティブ欄に書き込んだら解決できました。

    try_files $uri $uri/ /test1/index.php?q=$uri&$args;
    は既にやっていたのですがこちらは動かずでした。


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

    location ~^/test1/(.+\.php)$ {
    alias /var/www/test1/$1;
    fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    }

    キャンセル

  • 2017/12/13 16:26

    「}」が抜けていた件、失礼しました。出先で、タブレットからだったので、見落としていました。回答も修正しておきます。

    キャンセル

  • 2018/01/24 16:42

    以前はありがとうございました。
    少し時間が経ってしまいましたが
    実際に複数設置した場合に
    先に書いた分だけうまくいっていて
    後に書いた分はうまく動作していないことが判明しました。


    hogehoge.com/test1/に あああ を投稿
    hogehoge.com/test1/あああ/ で表示されます。

    hogehoge.com/02test/に いいい を投稿
    hogehoge.com/02test/いいい/ が404エラーとなります。



    以下のように記載しています。


    if (!-e $request_filename) {
    rewrite ^/test1(.+)$ /test1/index.php?q=$1 last;
    break;
    }
    location ~^/test1/(.+\.php)$ {
    alias /var/www/test1/$1;
    fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    }

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

    location ~^/02test/(.+\.php)$ {
    alias /var/www/02test/$1;
    fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    }


    逆にすると
    hogehoge.com/02test/いいい/が表示されて
    hogehoge.com/test1/あああ/が404となってしまいます。


    何か解決策がありますでしょうか?

    キャンセル

0

nginxに限った話ではなく、wordpressの仕様ですね。

↓このあたりでしょうか?

https://www.templateking.jp/practical/build/sub_dir.html

「マルチサイト機能」、「wordpress」で検索すると他にも出てきます。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/12/13 13:56

    ご回答ありがとうございます。
    やってみましたがうまくいきませんでした。

    今回作りたいのはマルチサイトではなく
    ワードプレスをサブディレクトリに複数設置することです。
    データベースを分散化したいのです。

    キャンセル

  • 2017/12/13 14:07

    ワードプレスをサブディレクトリに複数設置すること
    →これをワードプレスのマルチサイト機能と言うんではないんですかね?

    ワードプレスでは、実際に/sample-post/というディレクトリが無くても
    /sample-post/というURLへのアクセスで特定の記事を表示させられます。

    しかし、これは同時に、/sample-post/というディレクトリを作っても、
    記事のほうを探してしまい、無ければ404 Not Foundを返してしまいます。

    これを防ぐために、「このURL配下には別のワードプレスを作ったから、
    記事を探さず、ディレクトリをそのまま表示してね」っていう機能が
    マルチサイト機能だと僕は読み取ったんですが、、

    まぁ、自分もこれ使ったことは無いので、なんともいえませんが。。

    キャンセル

  • 2017/12/13 14:11

    マルチサイト機能はあくまでひとつのワードプレスで
    たくさんのサイトを運用することらしいです。

    キャンセル

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

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

関連した質問

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

  • WordPress

    6990questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

  • nginx

    820questions

    nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。