μž‘κ°€:
    생성:2025-08-23λ§ˆμ§€λ§‰ μ—…λ°μ΄νŠΈ:2025-08-23

    useRewriteURL ν›…

    useRewriteURL 훅은 Next.js용 ν΄λΌμ΄μ–ΈνŠΈ μ‚¬μ΄λ“œ ν›…μœΌλ‘œ, μ§€μ—­ν™”λœ URL μž¬μž‘μ„±μ„ μžλ™μœΌλ‘œ κ΄€λ¦¬ν•©λ‹ˆλ‹€. μ‚¬μš©μžκ°€ λ‘œμΌ€μΌ 접두사가 뢙은 μ •κ·œ 경둜(canonical path)λ₯Ό 직접 μž…λ ₯ν•˜λ”λΌλ„ λΈŒλΌμš°μ € μ£Όμ†Œμ°½μ΄ 항상 intlayer.config.ts에 μ •μ˜λœ "보기 쒋은" μ§€μ—­ν™”λœ 경둜λ₯Ό λ°˜μ˜ν•˜λ„λ‘ 보μž₯ν•©λ‹ˆλ‹€.

    이 훅은 window.history.replaceStateλ₯Ό μ‚¬μš©ν•˜μ—¬ 쑰용히 λ™μž‘ν•˜λ―€λ‘œ λΆˆν•„μš”ν•œ Next.js λΌμš°ν„° μ΄λ™μ΄λ‚˜ νŽ˜μ΄μ§€ μƒˆλ‘œκ³ μΉ¨μ„ ν”Όν•©λ‹ˆλ‹€.

    μ‚¬μš©λ²•

    λ ˆμ΄μ•„μ›ƒμ˜ 일뢀인 ν΄λΌμ΄μ–ΈνŠΈ μ»΄ν¬λ„ŒνŠΈμ—μ„œ 이 훅을 ν˜ΈμΆœν•˜κΈ°λ§Œ ν•˜λ©΄ λ©λ‹ˆλ‹€.

    tsx
    "use client";
    
    import { useRewriteURL } from "next-intlayer";
    
    const MyClientComponent = () => {
      // μ£Όμ†Œ ν‘œμ‹œμ€„μ—μ„œ /fr/privacy-notice λ₯Ό /fr/politique-de-confidentialite 둜 μžλ™μœΌλ‘œ μˆ˜μ •ν•©λ‹ˆλ‹€
      useRewriteURL();
    
      return null;
    };
    

    μž‘λ™ 방식

    1. 경둜 λͺ¨λ‹ˆν„°λ§: 훅은 μ‚¬μš©μžμ˜ locale 변경을 κ°μ§€ν•©λ‹ˆλ‹€.
    2. μž¬μž‘μ„± 감지: ν˜„μž¬ window.location.pathname을 ꡬ성에 μžˆλŠ” μž¬μž‘μ„± κ·œμΉ™κ³Ό λΉ„κ΅ν•©λ‹ˆλ‹€.
    3. URL μˆ˜μ •: ν˜„μž¬ κ²½λ‘œμ— λŒ€ν•΄ 더 보기 쒋은 둜컬라이즈된 별칭이 발견되면, 훅은 window.history.replaceStateλ₯Ό ν˜ΈμΆœν•˜μ—¬ μ£Όμ†Œ ν‘œμ‹œμ€„μ„ μ—…λ°μ΄νŠΈν•˜λ©΄μ„œ μ‚¬μš©μžλ₯Ό λ™μΌν•œ λ‚΄λΆ€ νŽ˜μ΄μ§€μ— μœ μ§€ν•©λ‹ˆλ‹€.

    μ™œ Next.jsμ—μ„œ μ‚¬μš©ν•΄μ•Ό ν•˜λ‚˜μš”?

    intlayerMiddlewareκ°€ μ„œλ²„ μΈ‘ λ¦¬λΌμ΄νŠΈμ™€ 초기 λ¦¬λ””λ ‰μ…˜μ„ μ²˜λ¦¬ν•˜λŠ” 반면, useRewriteURL 훅은 ν΄λΌμ΄μ–ΈνŠΈ μ‚¬μ΄λ“œ μ „ν™˜ 이후에도 λΈŒλΌμš°μ €μ˜ URL이 μ„ ν˜Έν•˜λŠ” SEO ꡬ쑰와 μΌμΉ˜ν•˜λ„λ‘ 보μž₯ν•©λ‹ˆλ‹€.

    • κΉ”λ”ν•œ URL: /fr/tests λŒ€μ‹  /fr/essais 같은 μ§€μ—­ν™”λœ μ„Έκ·Έλ¨ΌνŠΈ μ‚¬μš©μ„ κ°•μ œν•©λ‹ˆλ‹€.
    • μ„±λŠ₯: 전체 λΌμš°ν„° μ‚¬μ΄ν΄μ΄λ‚˜ 데이터 μž¬μš”μ²­μ„ μœ λ°œν•˜μ§€ μ•Šκ³  μ£Όμ†Œ ν‘œμ‹œμ€„λ§Œ μ—…λ°μ΄νŠΈν•©λ‹ˆλ‹€.
    • SEO μ •ν•©μ„±: μ‚¬μš©μžμ™€ 검색 μ—”μ§„ 봇에 ν•˜λ‚˜μ˜ URL λ²„μ „λ§Œ 보이도둝 ν•˜μ—¬ 쀑볡 μ½˜ν…μΈ  문제λ₯Ό λ°©μ§€ν•©λ‹ˆλ‹€.