2017-03-01 12 views
2

私は自分のプロジェクトのすべてのリンクをクリックして各ページに移動しても機能していますが、ポリマーでページをリロードすると404エラーが発生する理由はわかりません。私が追加したくないものを手伝ってください。ポリマーのページをリロードするときにエンカウンター404のエラーが発生する

ここに私のapp-location、app-route、iron-pagesがあります。

<app-location route="{{route}}"></app-location> 
<app-route 
    route="{{route}}" 
    pattern="/:page" 
    data="{{routeData}}" 
    tail="{{subroute}}"></app-route> 

<iron-pages selected="[[page]]" attr-for-selected="name"> 
    <good-article name="article" route="{{subroute}}"></good-article> 
    <good-detail name="detail" route="{{subroute}}"></good-detail> 
    <good-login name="login" route="{{subroute}}"></good-login> 
    <good-form name="form" route="{{subroute}}"></good-form> 
    <good-list name="list" route="{{subroute}}"></good-list> 
    <good-404 name="404"></good-404> 
</iron-pages> 

ここにスクリプトタグがあります。

<script> 
Polymer({ 
    is: 'good-app', 

    properties: { 
    page: { 
     type: String, 
     reflectToAttribute: true, 
     observer: '_pageChanged', 
    }, 
    }, 

    observers: [ 
    '_routePageChanged(routeData.page)', 
    ], 

    _routePageChanged: function(page) { 
    this.page = page || 'article'; 
    }, 

    _pageChanged: function(page) { 
    // Load page import on demand. Show 404 page if fails 
    var resolvedPageUrl = this.resolveUrl('good-' + page + '.html'); 
    this.importHref(resolvedPageUrl, null, this._showPage404, true); 
    }, 

    _showPage404: function() { 
    this.page = '404'; 
    }, 
}); 
</script> 

答えて

1

これはおそらくindex.htmlファイルにすべてのURLを再ルーティングないサーバーによって引き起こされます。あなたのアプリはjavascriptでルートを管理しているので、サーバはindex.html以外のURLを取得したときにどこにリダイレクトするかを知らない。したがって、アプリケーションが対応できるように、すべてのURLをindex.htmlに再ルーティングするようにサーバーを設定する必要があります(Apacheサーバーの場合は.htaccessと仮定します)。

1

URLに要求されたファイルがないため、これらのルートを処理するファイルにはJavaScriptロジックが含まれているため、すべてのURLを先にリダイレクトする必要があります。

この.htaccessファイルをフォルダに追加し、別の場合はindex.htmlをインデックス名に置き換えます。

<IfModule mod_rewrite.c> 
    <IfModule mod_negotiation.c> 
     Options -MultiViews 
    </IfModule> 

    RewriteEngine On 

    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)/$ /$1 [L,R=301] 

    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule^index.html [L] 

    RewriteCond %{HTTP:Authorization} . 
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 
</IfModule> 
関連する問題