12

反応アプリに反応ルーター (createBrowserHistory) を使用しています。

以下は私のコードです

var ReactDOM = require('react-dom') ;

var ReactRouter = require('react-router');
var Router = ReactRouter.Router;
var Route = ReactRouter.Route;
var Link = ReactRouter.Link;
var browserHistory = require('react-router');
var createBrowserHistory = require('history/lib/createBrowserHistory');

var CL = require('./page1/1.jsx');
var Validation = require('./page3/3.jsx');
var Infos = require('./page4/4.jsx');
var Confirm = require('./page7/7.jsx');
var Upload = require('./page8/8.jsx');

module.exports = (

  <Router history={new createBrowserHistory()}> 
    <Route path='/' component={CL}></Route>                                                                                                                                     
    <Route path='/validation' component={Validation}></Route>                                                                                                                                     
    <Route path='/infos' component={Infos}></Route>                                                                                                                                     
    <Route path='/confirm' component={Confirm}></Route>                                                                                                                                     
    <Route path='/upload' component={Upload}></Route>                                                                                                                                     
  </Router>
)

ローカルで IIS を実行し、ブラウザーで localhost に移動すると、「CL」コンポーネントを取得してページに表示できますが、/validation に移動すると、

Failed to load resource: the server respond with status of 404 (Not Found)

このルーティングを機能させるには、IIS または私の js コードに何を追加する必要があるか知っていますか?

4

6 に答える 6

23

私はあなたがiis 7の設定の下でreact-routerまたは同様のものについて話していると思います

<rules>
     <rule name="Rewrite Text Requests" stopProcessing="true">
         <match url=".*" />
             <conditions>
                        <add input="{HTTP_METHOD}" pattern="^GET$" />
                        <add input="{HTTP_ACCEPT}" pattern="^text/html" />
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
             </conditions>
             <action type="Rewrite" url="/index.html" />
     </rule>
</rules>
于 2016-09-30T05:40:27.697 に答える
3

注意すべきもう 1 つの点: URL Rewrite 拡張機能がインストールされていることを確認してください。

https://www.iis.net/downloads/microsoft/url-rewrite

iisresetまた、インストール後に行う必要がある場合もあります。

于 2017-02-17T20:27:18.817 に答える
1

もう 1 つのオプションは、IIS の上にアプリケーションを使用して、MVC を上に配置した ASP.NET フレームワークなど、便利な他の機能を確保することです。明確にマップされていないすべてのリクエスト (/api、/content など) を単純にキャッチし、React アプリが処理できるようにこれらを html にルーティングするルートをそこに持つことができます。純粋な IIS よりも優れている点は、状況によって異なります。

例として、ASP.NET Core のルート構成を次に示します。

app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller}/{action}/{id?}",
                defaults: new {controller = "Home", action = "Index"},
                constraints: new { controller = new NotEqualConstraint("api")});

            routes.MapRoute("api", "api/{controller}/{action}/{id?}");
            routes.MapRoute("React failover", "app/{*uri}", new {controller = "App", action = "Index"},
                new {controller = new NotEqualConstraint("api")});

        });
于 2016-02-21T12:59:55.033 に答える
1

あなたができることは2つあります...

  1. すべてのルートのスパ フォルダーを指す仮想パスを追加します。
  2. IIS URL 書き換えモジュールを使用します。これは、SO アプリを使用するための長い議論です。そのため、これについて説明する投稿を次に示します。 http://weblogs.asp.net/owscott/rewrite-vs-redirect-what-s-the-difference
于 2016-02-21T07:24:45.943 に答える