routes - 使用dart路由包url收到错误404

标签 routes dart

这是我的main.dart:

import 'dart:html';
import 'package:route/client.dart';
import 'urls.dart';
void main() {
  var router = new Router()
  ..addHandler(homeUrl, showHome)
  ..addHandler(galleryurl, showGallery)
  ..listen();
  HttpRequest.getString("home.html").then((html){
        querySelector("#container").innerHtml = html;
      });
}

void showHome(String path){
  HttpRequest.getString("home.html").then((html){
    querySelector("#container").innerHtml = html;
  }); 
}

void showGallery(String path){
  HttpRequest.getString("gallery.html").then((html){
    querySelector("#container").innerHtml = html;
  });
}

urls.dart:
library urls;
import 'package:route/url_pattern.dart';

final homeUrl = new UrlPattern(r'(.*)/');
final homeUrlWithFile = new UrlPattern(r'(.*)/index.html');
final contacturl = new UrlPattern(r'(.*)/contact');
final galleryurl = new UrlPattern(r'(.*)/gallery');

final allUrls = [homeUrl, contacturl, galleryurl];

和我的 body 在index.html中:
<body>
  <nav class="navbar navbar-default navbar-static-top">
    <div class="container">
      <div id="navbar" class="navbar-collapse collapse">
        <ul class="nav navbar-nav navbar-right">
          <li><a href="/">Home</a></li>
          <li><a href="/gallery">Gallery</a></li>
        </ul>
      </div>
    </div>  
  </nav>
  <main id="container">
  </main>
  <footer class="footer" >
    <div class="col-md-10 col-md-offset-1 col-sm-12">here's footer</div>
  </footer>
  <script src="packages\jquery_for_pub\1.11.0\jquery-1.11.0.min.js"></script>
  <script src="packages/bootstrap/js/bootstrap.js"></script>
  <script type="application/dart" src="main.dart"></script>

  <script data-pub-inline src="packages/browser/dart.js"></script>
</body>

我的问题是当我转到localhost:8080 / gallery时,出现错误404。但是,如果我打开localhost:8080并单击图库链接,则它可以工作。

我想将其重定向到index.html,并在localhost:8080 / gallery中打开时,#container的内容更改为gallery。
谢谢您的帮助

最佳答案

如果使用pushState(默认),则需要服务器支持才能将请求重定向到正确的URL。例如,通常将其委派给nginx。
或者,您可以禁用pushState并改用片段

var router = new Router(useFragment: true)
  ..addHandler(new UrlPattern(r'(.*)#something'), (_) => view = 'home')

关于routes - 使用dart路由包url收到错误404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30746391/

相关文章:

.net - MVC .net 站点的 URL 中具有语言属性的自定义路由

ruby-on-rails - Rails 中的漂亮路径

dart - 如何在构造函数的主体中初始化final字段?

firebase - 将依赖项添加到VScode中的gradle后无法同步

node.js - NodeJS - 具有路由更改的反向代理

zend-framework - 您使用什么搜索表单?获取查询或路由参数?

dart - 如何在 flutter 中设计一堆 Raise 按钮​​和图像

dart - Angular Dart中的分层路径参数

dart - 不要将变量显式初始化为null

php - Laravel 中的路由是否带有正斜杠?