hash模式,页面路径会携带#看起来很不友好,而且打包时路径必须是 ./
history模式 打包需要后端配置服务器路径,匹配不到跳转到index.html,配置如下:
Apache
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
</IfModule>
nginx
location / {
try_files $uri $uri/ /index.html;
}
前端需要把打包路径修改为 /,本地无法查看(会报路径错误),必须发布到服务器才能查看,在history需要前端自己写404页面,因为服务器在匹配不到页面时返回的是index.html而不是404.html了
总结:发现很少有人问这个问题,有一个也没人回答。也许是平时写惯了“./” 和“../”这些开头的路径了吧,并没有注意到静态文件引入方式的问题,折腾了好些方法,最后很尴尬的发现,其实问题很简单,只是对框架的底层了解不透彻罢了!