単一ページの JS アプリケーションのインデックス ページを削除し、ハッシュ化されていない URL をハッシュ化された URL にリダイレクトするように nginx 書き換えルールを構成するにはどうすればよいでしょうか?

単一ページの JS アプリケーションのインデックス ページを削除し、ハッシュ化されていない URL をハッシュ化された URL にリダイレクトするように nginx 書き換えルールを構成するにはどうすればよいでしょうか?

私はシングルページの JS アプリケーションを作成しているソフトウェア開発者です。決してシステム管理者ではないので、ご容赦ください。

私が実現したいのは、ユーザーが 2 つの潜在的に一般的な/望ましくない URL パターンのいずれかを使用してサイトにアクセスするたびにリダイレクトが発生するようにすることです。

  1. mysite.com/index.html -> mysite.com にリダイレクト
  2. mysite.com/path/they/remember -> ハッシュバージョンにリダイレクト: mysite.com/#/path/they/remember

さまざまな方法を試しましたが、リダイレクト ループが発生し続けます。現在の設定は次のとおりです。

注: /api では、すべてのリクエストを軽量の OAuth プロキシ経由で内部的にリダイレクトする必要があることにも気づくでしょう。そのため、どのようなソリューションを使用しても、このリダイレクトを中断することはできません。

server {

# Redirect all requests through /api/ to apiproxy.php
location /api {
    rewrite ^/api/?(.*)$ /apiproxy.php/$1 last;
}

location / {
    index index.html
}

# use case #1 (combined with use case #2 optionally, a url such as mysite.com/index.html/path/they/remember)
location ~ /index.html/?(.*) {
    return 301 http://mysite.com\#/$1;
}

location ~ /(.*) {
    return 301 http://mysite.com\#/$1;
}

この設定では、リダイレクト ループが全体に発生します。 nginx の方法で私が実行しようとしていることを実現する方法について、何か提案や知識をお持ちの方はいらっしゃいますか?

答え1

まず、ログレベルを上げてログを確認します。

最後のロケーションブロックは偽物のようです。

また、return 301 http://mysite.com\#/$1;合法ではないようですが、それをやりたかったのですか return 301 http://mysite.com/\#/$1/;?

逃げる必要がありますか#

関連情報