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

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

新規登録して質問してみよう
ただいま回答率
85.37%
nginx

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

WordPress

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

Q&A

解決済

2回答

1626閲覧

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

win4834

総合スコア16

nginx

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

WordPress

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

0グッド

0クリップ

投稿2017/12/12 06:09

編集2017/12/13 02:34

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

CHERRY

2017/12/12 06:57 編集

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

回答2

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 06:43

編集2017/12/13 07:27
CHERRY

総合スコア25216

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

win4834

2017/12/13 07: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; }
CHERRY

2017/12/13 07:26

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

2018/01/24 07: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となってしまいます。 何か解決策がありますでしょうか?
guest

0

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

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

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

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

投稿2017/12/13 04:35

keniroya

総合スコア104

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

win4834

2017/12/13 04:56

ご回答ありがとうございます。 やってみましたがうまくいきませんでした。 今回作りたいのはマルチサイトではなく ワードプレスをサブディレクトリに複数設置することです。 データベースを分散化したいのです。
keniroya

2017/12/13 05:07

ワードプレスをサブディレクトリに複数設置すること →これをワードプレスのマルチサイト機能と言うんではないんですかね? ワードプレスでは、実際に/sample-post/というディレクトリが無くても /sample-post/というURLへのアクセスで特定の記事を表示させられます。 しかし、これは同時に、/sample-post/というディレクトリを作っても、 記事のほうを探してしまい、無ければ404 Not Foundを返してしまいます。 これを防ぐために、「このURL配下には別のワードプレスを作ったから、 記事を探さず、ディレクトリをそのまま表示してね」っていう機能が マルチサイト機能だと僕は読み取ったんですが、、 まぁ、自分もこれ使ったことは無いので、なんともいえませんが。。
win4834

2017/12/13 05:11

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問