programing

Nuxt.js - URL에 후행 슬래시를 추가합니다.

goodsources 2022. 12. 19. 21:46
반응형

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/(거동)

하지만 파라메스를 사용하면, 현재는 다음과 같이 동작합니다.

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의 말미에 있지만 파라미터 에 있음)

잘 부탁드립니다!

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]
        }
    }
]

첫 번째 regex는 https://regex101.com/r/slHR3L/1 에서 확인하십시오.

마지막 힌트는 @Seybsen님 덕분입니다.

다음은 더 단순할 수 있으며 내가 볼 때 동일한 작업을 수행합니다.

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

이렇게 썼어요.이 코드는 행 끝에 있는 서명되지 않은 URL ? 및 /을 모두 포착합니다.제 생각에 그것이 충분한 것 같아요.

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

언급URL : https://stackoverflow.com/questions/56100693/nuxt-js-add-trailing-slash-to-urls-with-params

반응형