私はreactjsアプリケーションを反応ルータに持っています。私はハッシュの履歴を使いたくないし、ページをリフレッシュして404エラーを生成しました(リフレッシュすると反応ルータがロードされず、ブラウザは存在しないコンテンツをフェッチするため404)。私はいくつかの解決策を見つけ出し、すべてのリクエストをルートにリダイレクトして、サーバーが常にimportタグを使用してindex.htmlを取得するようにします。IISルートにあるすべてのリクエストをリダイレクト
マイフォルダ構造は単純です:
ROOT/
-- index.html
-- static/
-- js/
-- main.js
-- css/
etc...
私は、このサイトにあるこのweb.configファイルのルールがあります。
<rewrite>
<rules>
<rule name="redirect all requests" stopProcessing="true">
<match url="^(.*)$" ignoreCase="false" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" pattern="" ignoreCase="false" />
</conditions>
<action type="Rewrite" url="index.html" appendQueryString="true" />
</rule>
</rules>
</rewrite>
これは、最初のフォルダパスのURLと非常にうまく動作しますが、私はすべての意味します/items
、/contact
のようなリクエストは良好です。しかし、/items/detail
のような要求は、ブラウザがitems
というフォルダにあり、ドキュメントのルートではないために壊れています。また、非常に重要なことは、私のwebpackがindex.htmlスクリプトタグをこのようにして生成するということです:<script type="text/javascript" src="./static/js/main.js">
。
./
のためにsrc属性が間違っている可能性がありますか?どのようにサーバー(IIS 10)に "他の場所でもなくドキュメントのルートに見えませんか"と言うことができますか?
ありがとうございます。