我正在使用Vue CLI开发单页应用程序,并希望历史状态pushstate工作,所以我得到干净的URL。
我必须遵循这个:https://www.netlify.com/docs/redirects/#history-pushstate-and-single-page-apps并使用以下内容将_redirects
文件添加到我的站点文件夹的根目录:
/* /index.html 200
问题是我不知道如何将这个_redirects
文件添加到我的dist文件夹的根目录。我尝试将其添加到静态文件夹,但它最终在子文件夹中而不是在根目录中。如何在Netlify上部署此文件以使历史模式有效?
// config/index.js
build: {
// Paths
assetsRoot: path.resolve(__dirname, '../dist'),
assetsSubDirectory: 'static',
assetsPublicPath: '/',
对于使用vue-cli版本3.0.0-beta.x的新构建设置,现在有一个公用文件夹,您不需要以下设置。只需将您的_redirects
文件放在public
文件夹根目录下。在构建时,它将复制到将用于部署的dist文件夹。
Vue.js使用webpack复制静态资产。这是在webpack.prod.conf.js
中为生产构建维护的,这是Netlify在这种情况下所需要的。我相信最好和最干净的配置是based on this solution.
在new CopyWebpackPlugin
中搜索webpack.prod.conf.js
文件。
// copy custom static assets
new CopyWebpackPlugin([
{
from: path.resolve(__dirname, '../static'),
to: config.build.assetsSubDirectory,
ignore: ['.*']
}
])
创建一个根(项目中与静态文件夹相同级别的文件夹)您可以将此命名为任何名称,但我将使用root
作为示例。
然后,您将确保_redirects
文件位于新的root
目录或您调用的任何内容中。在这种情况下,它被命名为root
现在修改webpack.prod.conf.js
CopyWebpackPlugin部分,如下所示:
// copy custom static assets
new CopyWebpackPlugin([
{
from: path.resolve(__dirname, '../static'),
to: config.build.assetsSubDirectory,
ignore: ['.*']
},
{
from: path.resolve(__dirname, '../root'),
to: config.build.assetsRoot,
ignore: ['.*']
}
])
你也可以使用netlify.toml
文件,它往往更清洁一点。只需将其放入文件即可获得您正在寻找的重定向:
# The following redirect is intended for use with most SPA's that handles routing internally.
[[redirects]]
from = "/*"
to = "/index.html"
status = 200
force = true # Ensure that we always redirect
你可以找到更多关于netlify.toml
文件here的信息。
我已经尝试过没有最后一行的Rutger Willems的片段而且它有效。归功于Hamish Moffatt。
[[redirects]]
from = "/*"
to = "/index.html"
status = 200
您只需将_redirects文件添加到vue应用程序中的/ public目录即可