Nginxの背後にアプリがあります。しかし、私はこのアプリに特定のパスが必要ですWordpressブログにリダイレクトします
例:
example.com/ ------->アプリにリダイレクト
example.com/whatever/ ------->アプリにリダイレクトする
example.com/blog/ -------> Redirect to my Wordpress Blog
そこで、このサブパスに一致する場所を追加します
server {
listen 80 default_server;
index index.php;
server_name _;
location ^~ /blog {
root /path/to/my/blog;
index index.php index.html;
location ^~ /blog/(.*\.php)$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /path/to/my/blog/$fastcgi_script_name;
include fastcgi_params;
}
}
location ~* /(.*) {
#here the conf for the rest of the website
}
}
そして、ページを取得しようとすると、ログにこのエラーが含まれる404があります。
2016/05/22 15:27:24 [error] 21759#0: *1 open() "/path/to/my/blog/blog/index.php" failed (2: No such file or directory), client: XX.XX.XX.XX, server: _, request: "GET /blog/index.php HTTP/1.1", Host: "example.com"
/ blogと重複しています。
どうすればこれを修正できますか?
編集:
今私はこれを持っています(リチャード・スミスのおかげで):
location ^~ /blog {
root /path/to/my/;
index index.php;
try_files $uri $uri/ /blog/index.php;
location ~ \.php$ {
try_files $uri =404;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass 127.0.0.1:9000;
}
}
しかし今、別のファイル(たとえばtoto.html)を取得しようとすると、index.phpイベントが発生します
交換した場合
try_files $uri $uri/ /blog/index.php;
と
try_files $uri $uri/;
私は404を手に入れました
2016/05/22 20:57:21 [error] 22621#0: *1 "/path/to/my/blog/toto.html/index.php" is not found (20: Not a directory), client: 84.98.248.33, server: _, request: "GET /blog/toto.html/ HTTP/1.1", Host: "example.com"
ログに
編集2:
ファイルは現在存在しており、777の権利を与えています(本番環境に移行する前に後で削除します)。
drwxrwxrwx 2 user group 4096 May 22 20:36 .
drwxr-xr-x 11 user group 4096 May 23 06:20 ..
-rwxrwxrwx 1 user group 126 May 22 13:30 index.php
-rwxrwxrwx 1 user group 102 May 22 10:25 old.index.html
-rwxrwxrwx 1 user group 12 May 22 12:24 toto.html
お待ちいただき、ありがとうございます。
_/blog
_はURIの最初のコンポーネントであるため、root
から削除する必要があります。 _root /path/to/my
_内で_location ^~ /blog
_を使用します。
詳細は このドキュメント を参照してください。
また、_.php
_の場所の構文が無効です。次のようなものを使用できます。
_location ^~ /blog {
root /path/to/my;
index index.php;
try_files $uri $uri/ /blog/index.php;
location ~ \.php$ {
try_files $uri =404;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass 127.0.0.1:9000;
}
}
_
詳細は このドキュメント を参照してください。
最後に、Webサイトの残りの部分では、_location /
_の_^~
_修飾子が_location ^~ /blog
_で始まるすべてのURIに優先を与えるため、_/blog
_などの通常の場所を使用できます。詳細については、2番目のリファレンスを参照してください。