使用飞镖路线包 url 得到错误 404
using dart route package url got error 404
这是我的 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.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 并单击 gallery link,它会起作用。
我想将它重定向到 index.html,#container 的内容在 localhost:8080/gallery 打开时更改为 gallery。
感谢帮助
如果您使用 pushState(默认),您需要服务器支持才能将请求重定向到正确的 URL。例如,这通常委托给 nginx。
或者,您可以禁用 pushState 并改用片段
var router = new Router(useFragment: true)
..addHandler(new UrlPattern(r'(.*)#something'), (_) => view = 'home')
这是我的 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.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 并单击 gallery link,它会起作用。
我想将它重定向到 index.html,#container 的内容在 localhost:8080/gallery 打开时更改为 gallery。 感谢帮助
如果您使用 pushState(默认),您需要服务器支持才能将请求重定向到正确的 URL。例如,这通常委托给 nginx。
或者,您可以禁用 pushState 并改用片段
var router = new Router(useFragment: true)
..addHandler(new UrlPattern(r'(.*)#something'), (_) => view = 'home')