特定のサブディレクトリへのリクエストを別のルートロケーションに転送したいのですが。どうやって?私の既存のブロックは:
server {
listen 80;
server_name www.domain.com;
location / {
root /home/me/Documents/site1;
index index.html;
}
location /petproject {
root /home/me/pet-Project/website;
index index.html;
rewrite ^/petproject(.*)$ /$1;
}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
} }
つまり、 http://www.domain.com は/home/me/Documents/site1/index.htmlを提供しますが、 http://www.domain.com/petproject /home/me/pet-Project/website/index.htmlを提供する必要があります-nginxは置き換え後にすべてのルールを再実行するようです http://www.domain.com/petproject は/home/me/Documents/site1/index.htmlを提供するだけです。
構成には、通常nginxで発生する通常の問題があります。つまり、root
ブロック内でlocation
ディレクティブを使用します。
現在のlocation
ブロックの代わりにこの構成を使用してみてください:
root /home/me/Documents/site1;
index index.html;
location /petproject {
alias /home/me/pet-Project/website;
}
つまり、ウェブサイトのデフォルトのディレクトリは/home/me/Documents/site1
、および/petproject
URI、コンテンツは/home/me/pet-Project/website
ディレクトリ。
break
フラグを書き換えルールに追加する必要があります。これにより、処理が停止します。これはロケーションブロック内にあるため、処理はそのブロック内で続行されます。
rewrite ^/petproject/?(.*)$ /$1 break;
また、一致するパターンに/?
を追加して、URLの先頭に二重スラッシュが付かないようにしています。