Skip to content

Commit ed07100

Browse files
committed
Fix docs redirecting from other domains
1 parent c3e96b8 commit ed07100

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
lines changed

app/Http/Controllers/ShowDocumentationController.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ public function __invoke(Request $request, string $version, string $page = null)
2828

2929
abort_unless(is_dir(resource_path('views/docs/'.$version)), 404);
3030

31+
session(['viewing_docs_version' => $version]);
32+
3133
$navigation = Cache::remember("docs_nav_{$version}", now()->addDay(), function () use ($version) {
3234
return $this->getNavigation($version);
3335
});

routes/web.php

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,18 @@
2525

2626
// Forward unversioned requests to the latest version
2727
Route::get('/docs/{page?}', function ($page = null) {
28-
$latestVersion = '1';
28+
$version = session('viewing_docs_version', '1');
2929

3030
$referer = request()->header('referer');
3131

32-
$version = Str::before(ltrim(Str::after($referer, url('/docs/')), '/'), '/') ?: $latestVersion;
32+
// If coming from elsewhere in the docs, match the current version being viewed
33+
if (
34+
! session()->has('viewing_docs_version')
35+
&& parse_url($referer, PHP_URL_HOST) === parse_url(url('/'), PHP_URL_HOST)
36+
&& str($referer)->contains('/docs/')
37+
) {
38+
$version = Str::before(ltrim(Str::after($referer, url('/docs/')), '/'), '/');
39+
}
3340

3441
return redirect("/docs/{$version}/{$page}");
3542
})->name('docs')->where('page', '.*');

0 commit comments

Comments
 (0)