Skip to content

[6.x] Normalize and configure trailing slashes in URLs #11840

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 80 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
80 commits
Select commit Hold shift + click to select a range
a3c66f2
Add ability to enforce trailing slashes.
jesseleite Jun 3, 2025
c5b3c1a
Add test coverage when enforcing trailing slashes.
jesseleite Jun 3, 2025
c402a04
Improve logic to pass tests.
jesseleite Jun 3, 2025
9dcc3b2
Make sure we tearDown the static property.
jesseleite Jun 3, 2025
30ae95e
Add test coverage for removing trailing slashes.
jesseleite Jun 3, 2025
b5474b2
Pass tests again.
jesseleite Jun 3, 2025
a803641
Cleanup a bit.
jesseleite Jun 3, 2025
a42432e
Test that you can pass bool to unenforce trailing slashes.
jesseleite Jun 3, 2025
44b02c9
Singular.
jesseleite Jun 3, 2025
11ed64b
Flesh out tests a bit more around relative URLs.
jesseleite Jun 4, 2025
5fca6b8
Pass tests again.
jesseleite Jun 4, 2025
c6951dd
Test that `URL::tidy()` normalizes trailing slashes as well.
jesseleite Jun 4, 2025
e5ddae8
Implement normalization on `tidy()`.
jesseleite Jun 4, 2025
eeaa3ae
Update failing tests around `makeAbsolute()` calling `tidy()`.
jesseleite Jun 4, 2025
32526f2
If `makeAbsolute()` tidy’s, then `makeRelative()` should as well.
jesseleite Jun 4, 2025
60cf351
These should always reliably return strings now.
jesseleite Jun 4, 2025
4dd4de4
Use `URL` helpers in `Site` class 😎
jesseleite Jun 4, 2025
9a7ebea
More `tidy()` cleanup.
jesseleite Jun 5, 2025
b89947d
Flesh out ancestor tests a bit more.
jesseleite Jun 5, 2025
4202428
Pass failing tests.
jesseleite Jun 5, 2025
8ab16b4
These should already by tidy’d.
jesseleite Jun 5, 2025
4ef1331
I think we’re using wrong var here, and it worked by accident because…
jesseleite Jun 5, 2025
602bbd8
We can tidy slashes here too.
jesseleite Jun 5, 2025
60bc63b
Add test coverage for `parent()` method.
jesseleite Jun 18, 2025
813a829
Make `parent()` tests pass.
jesseleite Jun 18, 2025
5e1140d
Cleanup.
jesseleite Jun 18, 2025
fd7750c
Test that `prependSiteUrl()` tidy’s trailing slashes.
jesseleite Jun 18, 2025
ef39c1d
Pass failing `prependSiteUrl()` test.
jesseleite Jun 18, 2025
822edb7
Ensure these still work too.
jesseleite Jun 18, 2025
bbe4c24
Add test coverage for `slug()` method.
jesseleite Jun 18, 2025
00a2be1
Pass failing `slug()` tests.
jesseleite Jun 18, 2025
6633b65
Add test coverage for `replaceSlug()` method.
jesseleite Jun 18, 2025
20c179d
Pass failing `replaceSlug()` tests.
jesseleite Jun 18, 2025
cd390e1
Remove `getDefaultUri()` method that never did anything useful.
jesseleite Jun 18, 2025
9dc3d88
More return types.
jesseleite Jun 18, 2025
a35b064
Add test coverage for `assemble()` method.
jesseleite Jun 18, 2025
983d28a
Pass failing `assemble()` tests.
jesseleite Jun 18, 2025
3f1a689
Allow null case here.
jesseleite Jun 18, 2025
9f4244f
Merge branch 'master' of https://github.com/statamic/cms into url-tra…
jesseleite Jun 18, 2025
7648dac
Add test coverage for `removeSiteUrl()` method.
jesseleite Jun 18, 2025
36bf735
Pass failing `removeSiteUrl()` tests.
jesseleite Jun 18, 2025
3031ce8
More assertions, we love assertions.
jesseleite Jun 18, 2025
5b299bc
Add test coverage for checking external urls w/ `makeAbsolute()`.
jesseleite Jun 18, 2025
4b40d5a
Pass failing tests for `makeAbsolute()`.
jesseleite Jun 18, 2025
e2fb5a4
Flush url cache in test helpers after setting site(s).
jesseleite Jun 18, 2025
b25509f
Fix assertions and do the right thing.
jesseleite Jun 18, 2025
298a89f
Add test coverage for `isExternalToApplication()` method.
jesseleite Jun 18, 2025
b59693a
If url is same as current request domain, it can’t be external to app…
jesseleite Jun 18, 2025
4290517
Types!
jesseleite Jun 18, 2025
7867ab2
This doesn't affect tests, but affects property caches.
jesseleite Jun 18, 2025
ccc4e68
Move to bottom.
jesseleite Jun 18, 2025
4e6174b
This is not even a param.
jesseleite Jun 18, 2025
7ebcfc4
We’re thinking `makeRelative()` should always include leading slash.
jesseleite Jun 19, 2025
c4591ca
Also `makeAbsolute()` should handle case if no leading slash is passed.
jesseleite Jun 19, 2025
7c79e3b
Remove confusing public `getSiteUrl()` method, since it was only used…
jesseleite Jun 19, 2025
cd367cb
Remove confusing `prependSiteRoot()` method (which is basically a dup…
jesseleite Jun 19, 2025
e59d59b
Add `isAbsolute()` helper method.
jesseleite Jun 19, 2025
6641b28
It.
jesseleite Jun 19, 2025
5bc8120
Tweak comment.
jesseleite Jun 19, 2025
084c315
Remove `format()` in favour of our improved `tidy()` method.
jesseleite Jun 19, 2025
ed5c4fa
Pass failing asset repository test by tidying asset container URLs.
jesseleite Jun 19, 2025
8ceebfc
WIP (Why is this slow!?)
jesseleite Jun 19, 2025
3329ed2
The `tidy()` call at the end does this now.
jesseleite Jun 19, 2025
fdce7d3
Fix failing tests.
jesseleite Jun 19, 2025
76c1f35
Tidy `encode()` output and add test coverage.
jesseleite Jun 19, 2025
73d2d82
Add test coverage for `gravatar()` method.
jesseleite Jun 19, 2025
5007d74
Fix taxonomy repository not finding when trailing slashes are enforced.
jesseleite Jun 20, 2025
01111a9
Docblock cleanup.
jesseleite Jun 20, 2025
947dc0d
Make `normalizeTrailingSlash()` private; People should just use `tidy…
jesseleite Jun 20, 2025
394c9e8
Clean up property caching a bit.
jesseleite Jun 20, 2025
b9f97a1
Fix these assertions.
jesseleite Jun 20, 2025
6810065
Tidy output of `removeQueryAndFragment()` for consistency with other …
jesseleite Jun 20, 2025
4e0a63a
Fix recursion issue with site urls so that we can pass those WIP asse…
jesseleite Jun 20, 2025
1075b53
Self.
jesseleite Jun 20, 2025
d70f87a
Fix to pass newly failing assertions now that we’re checking for exte…
jesseleite Jun 20, 2025
c87f6db
Flesh out and fix failing tests since adding external check to `tidy()`.
jesseleite Jun 20, 2025
21f203a
Pass failing tests around yet-unconfigured site URLs not properly bei…
jesseleite Jun 20, 2025
a45a995
Merge branch 'master' of https://github.com/statamic/cms into url-tra…
jesseleite Jun 20, 2025
7377b95
Match trailing slash convention on external URLs when getting `parent…
jesseleite Jun 20, 2025
945b227
Flesh out data providers a bit more for consistency.
jesseleite Jun 20, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/Assets/AssetContainer.php
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ public function url()

$url = rtrim($this->disk()->url('/'), '/');

return ($url === '') ? '/' : $url;
return URL::tidy($url);
}

/**
Expand Down
Loading
Loading