Skip to content

[next]: ensure defaultLocale redirect doesn't conflict with user redirects#12916

Merged
ztanner merged 10 commits intomainfrom
ztanner/default-locale-redirect
Jan 28, 2025
Merged

[next]: ensure defaultLocale redirect doesn't conflict with user redirects#12916
ztanner merged 10 commits intomainfrom
ztanner/default-locale-redirect

Conversation

@ztanner
Copy link
Copy Markdown
Member

@ztanner ztanner commented Jan 24, 2025

When localeDetection is turned off, usually the user intends to handle redirects themselves, or doesn't want them at all. However because of the rewrites that we insert for defaultLocale handling, it can clobber the user-provided redirects. eg the rewrite to /${defaultLocale} would then flow through to the user's redirect handling to result in /${defaultLocale}/${redirectLocale} which wouldn't have been the intention.

When localeDetection is turned off, we shouldn't only attempt the defaultLocale rewrite handling when we've already processed all other routes (ie in the handle: miss case)

Closes NEXT-3975

@changeset-bot
Copy link
Copy Markdown

changeset-bot bot commented Jan 24, 2025

🦋 Changeset detected

Latest commit: e5c8b42

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 2 packages
Name Type
@vercel/next Patch
vercel Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@ztanner ztanner changed the title [next]: only add defaultLocale redirect if localeDetection is enabled [next]: only add defaultLocale redirects if localeDetection is enabled Jan 25, 2025
@ztanner ztanner force-pushed the ztanner/default-locale-redirect branch from 3a03b35 to 2c72dd8 Compare January 27, 2025 22:20
@ztanner ztanner changed the title [next]: only add defaultLocale redirects if localeDetection is enabled [next]: ensure defaultLocale redirect doesn't conflict with user redirects Jan 28, 2025
@ztanner ztanner added this pull request to the merge queue Jan 28, 2025
Merged via the queue into main with commit f65ea22 Jan 28, 2025
@ztanner ztanner deleted the ztanner/default-locale-redirect branch January 28, 2025 16:45
ztanner added a commit that referenced this pull request Jan 28, 2025
EndangeredMassa pushed a commit that referenced this pull request Jan 28, 2025
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## @vercel/[email protected]

### Major Changes

- Initial release
([#12903](#12903))

## @vercel/[email protected]

### Minor Changes

- Add `useWebApi` property to `NodejsLambda` class
([#12873](#12873))

- [build-utils] convert NodeVersion to class and add state getter
([#12883](#12883))
    [ruby] convert RubyVersion to class and add state getter

## [email protected]

### Minor Changes

- [cli] add Node Version to project list output table
([#12895](#12895))

### Patch Changes

- Enable executable bit for `src/vc.js` script
([#12863](#12863))

- Add video integration category to the integration install CLI
([#12870](#12870))

- [cli] update warning in ls --update-required for clarity
([#12864](#12864))

- Added headers for user-supplied rewrites
([#12847](#12847))

- [cli] refactor confirm component to use `client.input.confirm`
interface ([#12846](#12846))

- [build-utils] convert NodeVersion to class and add state getter
([#12883](#12883))
    [ruby] convert RubyVersion to class and add state getter

- Updated dependencies
\[[`56f72ffefb828c3001f7c82259ed0f71db4f629e`](56f72ff),
[`745404610a836fa6c2068c5c192d2f3e8b86918f`](7454046),
[`b6bb709370d2565121808340d43d0a9d90b53de1`](b6bb709),
[`85a64db8d9b6a6e9f7c6a019d51777930a806584`](85a64db),
[`ac6a62eff7db3b3e2713adc1f5bd6a1331d838ce`](ac6a62e),
[`f65ea2245382dd2449c96f695ed692d419a83868`](f65ea22),
[`7af40c1e9d9916cbe8287359662fc940f1d24fce`](7af40c1),
[`06307180c20ca07b65f7cb5e93b65c977b9ccd70`](0630718),
[`3a5507fd1459c77b4491f1c9c3a64ad42e4ff009`](3a5507f),
[`cefda60a603d60cc35e4697c36e751cca411e6bb`](cefda60),
[`003866c4c93e893edb7a5e89b519fc8879b370c0`](003866c)]:
    -   @vercel/[email protected]
    -   @vercel/[email protected]
    -   @vercel/[email protected]
    -   @vercel/[email protected]
    -   @vercel/[email protected]
    -   @vercel/[email protected]
    -   @vercel/[email protected]

## @vercel/[email protected]

### Minor Changes

- Make vite detection supersede ionic-react
([#12880](#12880))

## @vercel/functions@1.6.0

### Minor Changes

- Add middleware-related helper functions
([#12938](#12938))

## @vercel/[email protected]

### Minor Changes

- Add support for React Router v7
([#12904](#12904))

- Enable `nativeFetch` when `v3_singleFetch` future flag is enabled
([#12918](#12918))

### Patch Changes

- [remix] Create an interface for differences remix vs react-router
([#12925](#12925))

## @vercel/[email protected]

### Minor Changes

- [build-utils] convert NodeVersion to class and add state getter
([#12883](#12883))
    [ruby] convert RubyVersion to class and add state getter

## @vercel/[email protected]

### Patch Changes

- Updated dependencies
\[[`745404610a836fa6c2068c5c192d2f3e8b86918f`](7454046),
[`3a5507fd1459c77b4491f1c9c3a64ad42e4ff009`](3a5507f)]:
    -   @vercel/[email protected]

## @vercel/[email protected]

### Patch Changes

- Bump next from 14.2.10 to 14.2.21
([#12842](#12842))

## @vercel/[email protected]

### Patch Changes

- Fix local file system readdir to not throw on special file system stat
types ([#12915](#12915))

- Updated dependencies
\[[`d645bdd4312730b10bef89ad9e18e111500849fc`](d645bdd)]:
    -   @vercel/[email protected]

## @vercel/[email protected]

### Patch Changes

- Updated dependencies
\[[`745404610a836fa6c2068c5c192d2f3e8b86918f`](7454046),
[`3a5507fd1459c77b4491f1c9c3a64ad42e4ff009`](3a5507f)]:
    -   @vercel/[email protected]

## @vercel/[email protected]

### Patch Changes

- ensure defaultLocale rewrite doesn't conflict with user-defined
redirects ([#12916](#12916))

- Added headers for user-supplied rewrites
([#12847](#12847))

## @vercel/[email protected]

### Patch Changes

- Fix requests failing due to the presence of `Transfer-Encoding` header
in edge-function dev server.
([#10701](#10701))

- Split `build()`, `prepareCache()` and `startDevServer()` into separate
files ([#12872](#12872))

- Updated dependencies
\[[`745404610a836fa6c2068c5c192d2f3e8b86918f`](7454046),
[`3a5507fd1459c77b4491f1c9c3a64ad42e4ff009`](3a5507f)]:
    -   @vercel/[email protected]

## @vercel/[email protected]

### Patch Changes

- Remove support for VERCEL_IPC_FD
([#12908](#12908))

- Add `supportsResponseStreaming` to build output
([#12884](#12884))

## @vercel/[email protected]

### Patch Changes

-   Updated dependencies \[]:
    -   @vercel/[email protected]

## @vercel-internals/[email protected]

### Patch Changes

- Updated dependencies
\[[`745404610a836fa6c2068c5c192d2f3e8b86918f`](7454046),
[`3a5507fd1459c77b4491f1c9c3a64ad42e4ff009`](3a5507f)]:
    -   @vercel/[email protected]

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
ztanner added a commit that referenced this pull request Jan 29, 2025
This flags the behavior introduced in:

- #12916

With it by default being disabled to minimize the risk of the change.
ijjk added a commit that referenced this pull request Jan 29, 2025
github-merge-queue bot pushed a commit that referenced this pull request Feb 4, 2025
#13003)

With the experimental flag added in #12916 we added handling to add
non-localized redirects for dynamic routes, because we moved the
defaultLocale handling to the `handle: miss` case. However, we need to
add these redirects after the less-specific localized routes so that
those ones are matched first before the fallback case.

---------

Co-authored-by: JJ Kasper <[email protected]>
QuietCraftsmanship pushed a commit to QuietCraftsmanship/Vercel that referenced this pull request Jul 6, 2025
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## @vercel/[email protected]

### Major Changes

- Initial release
([#12903](vercel/vercel#12903))

## @vercel/[email protected]

### Minor Changes

- Add `useWebApi` property to `NodejsLambda` class
([#12873](vercel/vercel#12873))

- [build-utils] convert NodeVersion to class and add state getter
([#12883](vercel/vercel#12883))
    [ruby] convert RubyVersion to class and add state getter

## [email protected]

### Minor Changes

- [cli] add Node Version to project list output table
([#12895](vercel/vercel#12895))

### Patch Changes

- Enable executable bit for `src/vc.js` script
([#12863](vercel/vercel#12863))

- Add video integration category to the integration install CLI
([#12870](vercel/vercel#12870))

- [cli] update warning in ls --update-required for clarity
([#12864](vercel/vercel#12864))

- Added headers for user-supplied rewrites
([#12847](vercel/vercel#12847))

- [cli] refactor confirm component to use `client.input.confirm`
interface ([#12846](vercel/vercel#12846))

- [build-utils] convert NodeVersion to class and add state getter
([#12883](vercel/vercel#12883))
    [ruby] convert RubyVersion to class and add state getter

- Updated dependencies
\[[`97e4eb3c468b4c35c4b930137215ecd018707121`](vercel/vercel@97e4eb3),
[`0aea17613bd7c4b0cbf174f654efa0cf3abee363`](vercel/vercel@0aea176),
[`c8b8fdca6333c3d4503be696d046f57b2f221431`](vercel/vercel@c8b8fdc),
[`e7536c62bebab05ea989cf10de28c9dc311be2e8`](vercel/vercel@e7536c6),
[`33c6e67f14854ef680db612944063fc405843827`](vercel/vercel@33c6e67),
[`0ded32e2d5ae1d9812d70eb281b226e057b016a9`](vercel/vercel@0ded32e),
[`e1e6b58819ad8606ed4e963af5e1e58984cf02d7`](vercel/vercel@e1e6b58),
[`44dd8ccf5235c7019c14d2a8e34c4c0733ce110d`](vercel/vercel@44dd8cc),
[`1a4f0521f984ce891a3e9847d31e569f407c4319`](vercel/vercel@1a4f052),
[`ff43e4bf3f15a8875afe6f3cc9e22a37110f3751`](vercel/vercel@ff43e4b),
[`a376e638ffe384b962b14685293bccfb4507ab90`](vercel/vercel@a376e63)]:
    -   @vercel/[email protected]
    -   @vercel/[email protected]
    -   @vercel/[email protected]
    -   @vercel/[email protected]
    -   @vercel/[email protected]
    -   @vercel/[email protected]
    -   @vercel/[email protected]

## @vercel/[email protected]

### Minor Changes

- Make vite detection supersede ionic-react
([#12880](vercel/vercel#12880))

## @vercel/[email protected]

### Minor Changes

- Add middleware-related helper functions
([#12938](vercel/vercel#12938))

## @vercel/[email protected]

### Minor Changes

- Add support for React Router v7
([#12904](vercel/vercel#12904))

- Enable `nativeFetch` when `v3_singleFetch` future flag is enabled
([#12918](vercel/vercel#12918))

### Patch Changes

- [remix] Create an interface for differences remix vs react-router
([#12925](vercel/vercel#12925))

## @vercel/[email protected]

### Minor Changes

- [build-utils] convert NodeVersion to class and add state getter
([#12883](vercel/vercel#12883))
    [ruby] convert RubyVersion to class and add state getter

## @vercel/[email protected]

### Patch Changes

- Updated dependencies
\[[`0aea17613bd7c4b0cbf174f654efa0cf3abee363`](vercel/vercel@0aea176),
[`1a4f0521f984ce891a3e9847d31e569f407c4319`](vercel/vercel@1a4f052)]:
    -   @vercel/[email protected]

## @vercel/[email protected]

### Patch Changes

- Bump next from 14.2.10 to 14.2.21
([#12842](vercel/vercel#12842))

## @vercel/[email protected]

### Patch Changes

- Fix local file system readdir to not throw on special file system stat
types ([#12915](vercel/vercel#12915))

- Updated dependencies
\[[`ac4318615e248752ad20ca031f7c903e76e52899`](vercel/vercel@ac43186)]:
    -   @vercel/[email protected]

## @vercel/[email protected]

### Patch Changes

- Updated dependencies
\[[`0aea17613bd7c4b0cbf174f654efa0cf3abee363`](vercel/vercel@0aea176),
[`1a4f0521f984ce891a3e9847d31e569f407c4319`](vercel/vercel@1a4f052)]:
    -   @vercel/[email protected]

## @vercel/[email protected]

### Patch Changes

- ensure defaultLocale rewrite doesn't conflict with user-defined
redirects ([#12916](vercel/vercel#12916))

- Added headers for user-supplied rewrites
([#12847](vercel/vercel#12847))

## @vercel/[email protected]

### Patch Changes

- Fix requests failing due to the presence of `Transfer-Encoding` header
in edge-function dev server.
([#10701](vercel/vercel#10701))

- Split `build()`, `prepareCache()` and `startDevServer()` into separate
files ([#12872](vercel/vercel#12872))

- Updated dependencies
\[[`0aea17613bd7c4b0cbf174f654efa0cf3abee363`](vercel/vercel@0aea176),
[`1a4f0521f984ce891a3e9847d31e569f407c4319`](vercel/vercel@1a4f052)]:
    -   @vercel/[email protected]

## @vercel/[email protected]

### Patch Changes

- Remove support for VERCEL_IPC_FD
([#12908](vercel/vercel#12908))

- Add `supportsResponseStreaming` to build output
([#12884](vercel/vercel#12884))

## @vercel/[email protected]

### Patch Changes

-   Updated dependencies \[]:
    -   @vercel/[email protected]

## @vercel-internals/[email protected]

### Patch Changes

- Updated dependencies
\[[`0aea17613bd7c4b0cbf174f654efa0cf3abee363`](vercel/vercel@0aea176),
[`1a4f0521f984ce891a3e9847d31e569f407c4319`](vercel/vercel@1a4f052)]:
    -   @vercel/[email protected]

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
QuietCraftsmanship pushed a commit to QuietCraftsmanship/Vercel that referenced this pull request Jul 6, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants