【问题标题】:Nuxt.js - add trailing slash to URL's with paramsNuxt.js - 使用参数向 URL 添加斜杠
【发布时间】:2019-05-12 15:26:06
【问题描述】:

本题基于this previous one

出于 SEO 的原因,我希望我的所有 URL 都以斜线结尾。到目前为止,我有这个功能与nuxt-redirect-module

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

这会检查 url,并在末尾添加一个 / 以防万一。问题是当 url 末尾有参数时。

所以现在,这个重定向

https://example.com/folder

https://example.com/folder/(预期行为)

但是使用参数,现在它的工作方式是这样的:

https://example.com/folder?param=true

https://example.com/folder?param=true/(它在参数后添加/

问题

这将是使其重定向的方法,而不是从

https://example.com/folder?param=true

https://example.com/folder/?param=true (所以它会在网址末尾添加/,但在参数之前

提前致谢!

【问题讨论】:

    标签: vue.js vuejs2 nuxt.js


    【解决方案1】:
    redirect: [
        {
            from: '^[\\w\\.\\/]*(?<!\\/)(\\?.*\\=.*)*$',
            to: (from, req) => {
                const matches = req.url.match(/^.*(\?.*)$/)
                if (matches.length > 1) {
                    return matches[0].replace(matches[1], '') + '/' + matches[1]
                }
                return matches[0]
            }
        }
    ]
    

    在此处检查第一个正则表达式:https://regex101.com/r/slHR3L/1

    感谢@Seybsen 的最后提示 :)

    【讨论】:

    • 感谢您的回答。似乎 JS 中的那个正则表达式有问题。它输出此错误SyntaxError: Invalid regular expression: /^[w./]*(?&lt;!/)(?.*=.*)*$/: Invalid group
    • 反斜杠对于转义字符很重要,例如\w 与 w 有不同的含义,点字符的意思是“一切”,除了 \。它用于指定点字符本身。你确定你保留了正确的格式吗?
    • 是的,我照原样复制了表达式。我搜索了一下,似乎在应用于 JS 的正则表达式方面存在一些差异,这可能是错误的根源(类似于此示例 stackoverflow.com/questions/4200157/…
    • 由于正则表达式是一个字符串,因此您需要将反斜杠加倍。
    • 感谢@Seybsen 的输入。我检查了 niccord 编辑,但现在它似乎在任何情况下都不起作用(即使在简单的 example.com/folderexample.com/folder 的情况下也不行。它没有给出错误的想法。
    【解决方案2】:

    据我所知,以下内容可能更简单,并且效果相同:

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

    【讨论】:

      【解决方案3】:

      我是这样写的。此代码捕获所有未签名的网址?和 / 在行尾。我觉得够了

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-09
        相关资源
        最近更新 更多