nginxを使用してパスをリダイレクトし、同時にパスの一部を削除する方法

nginxを使用してパスをリダイレクトし、同時にパスの一部を削除する方法

CentOS Linuxでnginx 1.8.1を使用して、次のことを試しました。

  • server_name server1.olddomain.com;から へ トラフィックリダイレクトserver2.newdomain.com
  • これを行うときは、sitesパスから削除してください。

たとえばnginx.conf

server {
   ...
   server_name server1.olddomain.com;
   ...
   location /sites/ITDept {
        rewrite ^(.*) https://server2.newdomain.com/ITDept;
}

これは上記の正確な規則に従って意図したとおりに機能しますが、他のものは機能しません。

https://server1.olddomain.com/sites/ITDept/subfolder/subfolder必要に応じてリダイレクトしませんhttps://server2.newdomain.com/ITDept/subfolder/subfolder。にリダイレクトされますhttps://server2.newdomain.com/sites/ITDept/subfolder/subfolder

私は成功せずに正しい構文を見つけようと数時間を費やしました。誰かが助けることができることを願っています。よろしくお願いします。

答え1

ちょうど気づいたかもしれません。書き換え規則を次のように変更します。

rewrite ^/sites/(.*)$ https://server2.newdomain.com/$1 last;

こうすれば可能なようです。誰かがより良い選択をしない限り。これがうまくいくかどうかを確認するためにまだ多くのリンクをテストしていますが、これまでは非常に良いです。この記事に感謝します。HttpRewriteModuleを使用してNginxからURLの一部をすばやく簡単に削除する方法は?

答え2

で始まらないURIで何をしたいかはわかりませんが、必要な/sitesのは簡単なrewriteものでなければなりません。

server {
    server_name server1.olddomain.com;
    rewrite ^/sites(.*)$ https://server2.newdomain.com$1 permanent;
    return 404;
}

バラよりこのファイルもっと学ぶ。

関連情報