【问题标题】:Encounter 404 error when reload page in Polymer在 Polymer 中重新加载页面时遇到 404 错误
【发布时间】:2017-03-01 07:08:14
【问题描述】:

当我单击项目的每个链接并转到每个页面时它正在工作,但我不知道为什么在聚合物中重新加载页面时出现 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>

【问题讨论】:

    标签: javascript polymer


    【解决方案1】:

    这可能是由于服务器未将所有 url 重新路由到 index.html 文件造成的。由于您的应用程序使用 javascript 管理路由,因此服务器在获取 index.html 以外的 URL 时不知道重定向到哪里。因此,您应该配置您的服务器(如果它是 Apache 服务器,我假设 .htaccess)将所有 url 重新路由到 index.html,以便应用程序可以处理它们。

    【讨论】:

      【解决方案2】:

      这是因为 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>
      

      【讨论】:

        猜你喜欢
        • 2019-08-18
        • 2019-05-17
        • 1970-01-01
        • 2018-10-21
        • 2022-12-14
        • 2014-12-25
        • 2012-02-23
        • 2021-06-05
        • 1970-01-01
        相关资源
        最近更新 更多