2017-05-15 9 views
1

私は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)に "他の場所でもなくドキュメントのルートに見えませんか"と言うことができますか?

ありがとうございます。

答えて

2

これは解決策ですが、IISで処理したいパスが残っていることがわかりましたが、残りの部分は注意が必要です。

<configuration> 
     <system.webServer> 
      <rewrite> 
       <rewriteMaps> 
        <rewriteMap name="^(.*)$" /> 
       </rewriteMaps> 
       <rules> 
        <rule 
         name="redirect all requests" 
         stopProcessing="true" 
        > 
         <match url="^(.*)$" /> 
         <conditions logicalGrouping="MatchAll"> 
          <add 
           input="{REQUEST_URI}" 
           pattern="/someOtherResourceIstillWantIIStoHandle(.*)$" 
           negate="true" 
          /> 

          <add 
           input="{REQUEST_FILENAME}" 
           matchType="IsFile" 
           negate="true" 
          /> 
          <add 
           input="{REQUEST_URI}" 
           pattern="/resourcecentre(.*)$" 
           negate="true" 
          /> 
         </conditions> 
         <action type="Rewrite" url="/index.html" /> 
        </rule> 
       </rules> 
      </rewrite> 
     </system.webServer> 
    </configuration> 
関連する問題