vue.js Nuxt.js -强制在所有url的末尾使用尾随斜杠

ve7v8dk2  于 2022-11-17  发布在  Vue.js
关注(0)|答案(3)|浏览(251)

我正在寻找一种方法来确保我所有的url都以一个尾随斜杠结尾(所以首先检查结尾处是否已经有一个尾随斜杠,如果没有,就添加一个)。
我试过使用nuxt-redirect-module,添加斜杠可以正常工作,但会导致无限重定向

redirect: [
  {
    from: '^(.*)$',
    to: (from, req) => {
      let trailingUrl = req.url.endsWith('/') ? req.url : req.url + '/'
      return trailingUrl
    }
  }
]

任何见解都将受到欢迎。谢谢!

rdlzhqv9

rdlzhqv91#

下面的正则表达式也处理查询字符串:

redirect: [
    {
        from: '^(\\/[^\\?]*[^\\/])(\\?.*)?$',
        to: '$1/$2',
    },
],
lnvxswe2

lnvxswe22#

您可以尝试仅匹配那些不以斜杠结尾的URL:

redirect: [
    {
        from: '^.*(?<!\/)$',
        to: (from, req) => req.url + '/'
    }
]
rdrgkggo

rdrgkggo3#

我也遇到了同样的问题,但我不想使用重定向,我尝试了很多解决方案,但最后发现在路由路径中添加双斜线达到了预期的效果:

router: {
    prefetchLinks: false,
    middleware: 'navigation',
    routeNameSplitter: '/',
    extendRoutes(routes, resolve) {
      routes.push(
        {
          name: 'kaufen',
          path: '/kaufen//',
          component: resolve(__dirname, 'pages/listing/index.vue'),
        },
        {
          name: 'mieten',
          path: '/mieten//',
          component: resolve(__dirname, 'pages/listing/index.vue'),
        },

这将导致:

https://example.com/kaufen/?alternate=true&ignoreToplisting=false

这看起来很俗气,但它确实起到了作用!

相关问题