web-dev-qa-db-ja.com

Nuxt.js-パラメータ付きのURLに末尾のスラッシュを追加

この質問は 以前の質問に基づいています

SEOの理由で、すべてのURLの末尾をスラッシュにしたい。これまでのところ、この関数は nuxt-redirect-module で動作しています

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

これにより、URLがチェックされ、ない場合は末尾に/が追加されます。問題は、URLの最後にパラメータがある場合です。

だから今、これはリダイレクトします

https://example.com/folder

https://example.com/folder/(意図された動作)

しかしwith params、今のところ次のように機能します。

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

https://example.com/folder?param=true//paramsの後を追加します)

[〜#〜]質問[〜#〜]

代わりにリダイレクトするようにする方法です

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

https://example.com/folder/?param=true(URLの最後に/を追加しますが、paramsの前に)

前もって感謝します!

9
Joe82
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に感謝します:)

2
niccord

次の方が簡単かもしれませんが、私が見る限り同じです:

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