我的路线:
[domain]/manage
[domain]/manage/clients
[domain]/manage/users
我已将pushState设置为true。
这是我的htaccess:
php_value max_input_vars 10000;
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) /index.html
AddType text/css .css
这在我的Angular 1.x应用程序中完美运行。移至Aurelia,它在[domain]/manage
级别工作,但不在[domain]/manage/clients
级别。所有级别的一切都运行得很好,直到你是一个深入路线的两个节点,你点击刷新,然后突然它完全失败。
我甚至尝试使用具有完全相同结果的节点服务器(spa服务器)。一旦深度超过一级,就无法再找到静态资源。所以它甚至不能引导。
有什么想法吗?
答案 0 :(得分:1)
Aurelia Cheat Cheet告诉你需要:在html文档的头部添加一个基本标记。如果你正在使用JSPM,你还需要使用与你的基本标记相对应的baseURL来配置它。 #39; s href。
<base href="http://www.example.com/page.html">
<script>System.config({baseURL: '/manage'});</script>
您还必须在路由器配置中将pushState设置为true
config.options.pushState = true;
答案 1 :(得分:1)
确保以下一般检查
1.)您的apache / nginx配置正确
Nginx - 无需重写
location /api {
//some proxy backend
}
location / {
try_files $uri /index.html;
}
2.确保您的config.js路径是从/(绝对路径)映射
paths: {
"*": "/dist/*",
"github:*": "/jspm_packages/github/*",
"npm:*": "/jspm_packages/npm/*"
}
3.确保index.html使用/(绝对路径)
的路径<link rel="stylesheet" href="/jspm_packages/npm/font-awesome@4.6.3/css/font-awesome.min.css">
<script src="/jspm_packages/system.js"></script>
<script src="/config.js"></script>
答案 2 :(得分:0)
当您的入口点是嵌套路由并且您正在使用带有角度路由器的pushState配置时,任何后续导入路径相对于当前URL(当时是/现在是/ manage /)似乎存在问题。
经过多次挫折和头疼之后,我发现这可以解决我的问题:
<base href="http://www.example.com/">
(在index.html的头部)
另一个成功的,如果不太可维护的解决方案是将每个路由明确添加到.htaccess:
RewriteRule ^someroute/?$ "\/index\.html" [R=301,L]
RewriteRule ^anotherroute/?$ "\/index\.html" [R=301,L]
答案 3 :(得分:0)
Tjad的答案只缺少一个元素:
如果希望pushState与aurelia和嵌套路由一起使用,则必须添加它。
<base href="/">
&#13;