Нукс.js-добавить косую черту в URL с помощью params


Нукс.js-добавить косую черту в URL с помощью params

12.05.2019 06:26:06 Просмотров 66 Источник

Этот вопрос основан на этом предыдущем

Я хочу, чтобы все мои URL-адреса заканчивались Слэшем по причинам SEO. До сих пор у меня эта функция работает с модулем Nuxt-redirect

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

Это проверяет url-адрес и добавляет /в конце, если это не так. Проблема заключается в том, что url-адрес имеет параметры в конце.

Так что прямо сейчас, это перенаправляет

https://example.com/folderчтобы

https://example.com/folder/(предполагаемое поведение)

Но с params, прямо сейчас это работает так:

https://example.com/folder?param=trueчтобы

https://example.com/folder?param=true/(он добавляет /После парамов)

Вопрос

Что было бы способом сделать его таким, чтобы он перенаправлял вместо этого от

https://example.com/folder?param=trueчтобы

https://example.com/folder/?param=true (таким образом, он добавит /в конце url, но перед парами)

Заранее спасибо!

У вопроса есть решение - Посмотреть?

Ответы - Нукс.js-добавить косую черту в URL с помощью params / Nuxt.js - add trailing slash to URL's with params

niccord

19.05.2019 11:29:48

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 за последнюю подсказку :)

https://stackoverflow.com/questions/56100693/nuxt-js-add-trailing-slash-to-urls-with-params/56211756#comment99087811_56211756
Спасибо за ответ. Похоже, что с этим регулярным выражением в JS что-то не так. Он выводит эту ошибку SyntaxError: Invalid regular expression: /^[w./]*(?<!/)(?.*=.*)*$/: Invalid group
https://stackoverflow.com/questions/56100693/nuxt-js-add-trailing-slash-to-urls-with-params/56211756#comment99088301_56211756
обратные косые черты важны для того, чтобы избежать символов, например, \w имеет другое значение от w, символ точки означает "все", но \. он используется для указания самого символа точки. Вы уверены, что сохранили правильный формат?
https://stackoverflow.com/questions/56100693/nuxt-js-add-trailing-slash-to-urls-with-params/56211756#comment99089184_56211756
Да, я скопировал выражение, как оно есть. Я искал немного, и кажется, что есть некоторые различия, когда речь заходит о регулярном выражении применительно к JS, и это может быть источником ошибки (что-то вроде этого примера stackoverflow.com/questions/4200157/... )
https://stackoverflow.com/questions/56100693/nuxt-js-add-trailing-slash-to-urls-with-params/56211756#comment99094562_56211756
Поскольку регулярное выражение является строкой, вам нужно удвоить обратную косую черту.
https://stackoverflow.com/questions/56100693/nuxt-js-add-trailing-slash-to-urls-with-params/56211756#comment99096479_56211756
Спасибо за вклад @Seybsen. Я проверил niccord edit, но теперь он, кажется, не работает в любом случае (даже в простом example.com/folder чтобы example.com/folder кейс. Он не дает ошибочной мысли.
https://stackoverflow.com/questions/56100693/nuxt-js-add-trailing-slash-to-urls-with-params/56211756#comment99096557_56211756
пожалуйста, попробуйте добавить console.log('something')до const matches?
https://stackoverflow.com/questions/56100693/nuxt-js-add-trailing-slash-to-urls-with-params/56211756#comment99098095_56211756
Делали это-буквально утешали.log ("что-то"), и он выводит "что-то" в моем nuxt.JS console, но только когда я сначала редактирую свой файл перенаправления (тот, где у меня есть все перенаправления, включая этот), а затем обновляю браузер. Если я просто редактирую файл или просто обновляю браузер, он ничего не выводит.
https://stackoverflow.com/questions/56100693/nuxt-js-add-trailing-slash-to-urls-with-params/56211756#comment101795125_56211756
Примечание: это регулярное выражение использует отрицательную функцию lookbehind, которая поддерживается с узла 9.
maikel

13.02.2020 10:31:07

Следующее Может быть проще и делает то же самое, насколько я могу видеть:

redirect: [
    {
        from: '^(\\/[^\\?]*[^\\/])(\\?.*)?$',
        to: '$1/$2',
    },
],
Помочь в развитии проекта:
Закрыть X