Skip to content

Commit 9283880

Browse files
authored
Add a custom not-found page (#357)
1 parent 1182f71 commit 9283880

File tree

3 files changed

+266
-1
lines changed

3 files changed

+266
-1
lines changed

.github/workflows/build-and-stage.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ jobs:
5050
- 'api/**'
5151
- 'articles/**'
5252
- 'guides/**'
53+
- 404.html
5354
- build-metadata.sh
5455
- docfx.json
5556
- name: Declare image versions

404.html

Lines changed: 260 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,260 @@
1+
<!DOCTYPE html>
2+
<!--[if IE]><![endif]-->
3+
<html>
4+
5+
<head>
6+
<script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js"
7+
integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj"
8+
crossorigin="anonymous"></script>
9+
<script src="https://cdn.cookielaw.org/scripttemplates/otSDKStub.js"
10+
data-domain-script="018ee7f5-70e6-7787-8d98-05c8f935c75d"></script>
11+
<script>function OptanonWrapper() { }</script>
12+
<script>
13+
function setGTM(w, d, s, l, i) { w[l] = w[l] || []; w[l].push({ 'gtm.start': new Date().getTime(), event: 'gtm.js' }); var f = d.getElementsByTagName(s)[0], j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f); }
14+
if (document.cookie.indexOf('OptanonConsent') > -1 && document.cookie.indexOf('groups=') > -1) { setGTM(window, document, 'script', 'dataLayer', 'GTM-MMDFJKF'); } else { waitForOnetrustActiveGroups(); } var timer; function waitForOnetrustActiveGroups() { if (document.cookie.indexOf('OptanonConsent') > -1 && document.cookie.indexOf('groups=') > -1) { clearTimeout(timer); setGTM(window, document, 'script', 'dataLayer', 'GTM-MMDFJKF'); } else { timer = setTimeout(waitForOnetrustActiveGroups, 250); } }
15+
</script>
16+
17+
<meta charset="utf-8">
18+
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
19+
<meta http-equiv="Pragma" content="no-cache">
20+
<meta http-equiv="Expires" content="0">
21+
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
22+
<title>Page Not Found | Steeltoe </title>
23+
<meta name="viewport" content="width=device-width">
24+
<meta name="title" content="Page Not Found | Steeltoe ">
25+
26+
<link rel="shortcut icon" href="https://steeltoe.io/images/favicon.png">
27+
28+
<link rel="stylesheet" href="/styles/docfx.vendor.css">
29+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/4.6.2/css/bootstrap.min.css"
30+
integrity="sha512-rt/SrQ4UNIaGfDyEXZtNcyWvQeOq0QLygHluFQcSjaGB04IxWhal71tKuzP6K8eYXYB6vJV4pHkXcmFGGQ1/0w=="
31+
crossorigin="anonymous" referrerpolicy="no-referrer">
32+
<link rel="stylesheet" href="/styles/frommainsite.css">
33+
<link rel="stylesheet" href="/styles/docfx.css">
34+
<link rel="stylesheet" href="/styles/main.css">
35+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.1.2/styles/a11y-light.min.css">
36+
37+
<meta property="docfx:navrel" content="">
38+
<meta property="docfx:tocrel" content="">
39+
40+
<meta property="docfx:newtab" content="true">
41+
42+
</head>
43+
44+
<body data-spy="scroll" data-target="#affix" data-offset="120">
45+
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-MMDFJKF" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
46+
<div id="wrapper">
47+
<header class="bg-white">
48+
<nav class="bg-white navbar navbar-expand-xl container py-xl-2 navbar-light hidewhenembedded">
49+
<a class="navbar-brand" href="https://steeltoe.io" onmouseover="$(this).removeAttr('target')">
50+
<img id="logo" class="svg" src="/images/logo.svg" alt="Steeltoe Documentation" style="width: 211px;">
51+
</a>
52+
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbar"
53+
aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
54+
<span class="navbar-toggler-icon"></span>
55+
</button>
56+
<div class="collapse navbar-collapse" id="navbar">
57+
<ul class="navbar-nav text-center">
58+
<li class="nav-item dropdown ml-xl-5 mr-xl-2">
59+
<button class="btn nav-link dropdown-toggle" href="#" id="why" data-toggle="dropdown"
60+
aria-haspopup="true" aria-expanded="false">
61+
Why Steeltoe
62+
</button>
63+
<div class="dropdown-menu" aria-labelledby="why">
64+
<a class="dropdown-item" href="https://steeltoe.io/why-steeltoe"
65+
onclick="$(this).removeAttr('target')">Overview</a>
66+
<a class="dropdown-item" href="https://steeltoe.io/microservices"
67+
onclick="$(this).removeAttr('target')">Microservices</a>
68+
<a class="dropdown-item" href="https://steeltoe.io/cloud"
69+
onclick="$(this).removeAttr('target')">Cloud</a>
70+
<a class="dropdown-item" href="https://steeltoe.io/web-application"
71+
onclick="$(this).removeAttr('target')">Web Applications</a>
72+
<a class="dropdown-item" href="https://steeltoe.io/event-driven"
73+
onclick="$(this).removeAttr('target')">Event Driven</a>
74+
</div>
75+
</li>
76+
<li class="nav-item dropdown mx-xl-2">
77+
<button class="btn nav-link dropdown-toggle" href="#" id="learn" data-toggle="dropdown"
78+
aria-haspopup="true" aria-expanded="false">
79+
Get Started
80+
</button>
81+
<div class="dropdown-menu" aria-labelledby="learn">
82+
<a class="dropdown-item" href="https://start.steeltoe.io" target="_blank">Steeltoe Initializr</a>
83+
<a class="dropdown-item" id="guidesNavLink" href="/guides" onclick="$(this).removeAttr('target')">Guides</a>
84+
<a class="dropdown-item active" id="docsNavLink" href="/api/v4/welcome/" onclick="$(this).removeAttr('target')">Documentation</a>
85+
<a class="dropdown-item" id="apiBrowserNavLink" href="/api/browser/v4/all" onclick="$(this).removeAttr('target')">API Browser</a>
86+
<a class="dropdown-item" id="blogNavLink" href="/articles/" onclick="$(this).removeAttr('target')">Blog</a>
87+
</div>
88+
</li>
89+
<li class="nav-item dropdown mx-xl-2">
90+
<button class="btn nav-link dropdown-toggle" href="#" id="projects" data-toggle="dropdown"
91+
aria-haspopup="true" aria-expanded="false">
92+
Projects
93+
</button>
94+
<div class="dropdown-menu" aria-labelledby="projects">
95+
<a class="dropdown-item" href="https://steeltoe.io/app-configuration"
96+
onclick="$(this).removeAttr('target')">Steeltoe Application Configuration</a>
97+
<a class="dropdown-item" href="/api/v4/logging/"
98+
onclick="$(this).removeAttr('target')">Steeltoe Dynamic Logging</a>
99+
<a class="dropdown-item" href="https://steeltoe.io/cloud-management"
100+
onclick="$(this).removeAttr('target')">Steeltoe Management</a>
101+
<a class="dropdown-item" href="/api/v4/fileshares"
102+
onclick="$(this).removeAttr('target')">Steeltoe Network File Sharing</a>
103+
<a class="dropdown-item" href="https://steeltoe.io/security-providers"
104+
onclick="$(this).removeAttr('target')">Steeltoe Security</a>
105+
<a class="dropdown-item" href="https://steeltoe.io/service-connectors"
106+
onclick="$(this).removeAttr('target')">Steeltoe Service Connectors</a>
107+
<a class="dropdown-item" href="https://steeltoe.io/service-discovery"
108+
onclick="$(this).removeAttr('target')">Steeltoe Service Discovery</a>
109+
</div>
110+
</li>
111+
<li class="nav-item mx-xl-2">
112+
<a class="btn nav-link" href="https://steeltoe.io/support"
113+
onclick="$(this).removeAttr('target')">Support</a>
114+
</li>
115+
<li class="nav-item mx-xl-2">
116+
<a class="btn nav-link" href="https://steeltoe.io/community"
117+
onclick="$(this).removeAttr('target')">Community</a>
118+
</li>
119+
</ul>
120+
</div>
121+
<div class="search-open" style="display: none;">
122+
<form class="navbar-form navbar-right" role="search">
123+
<div class="form-group">
124+
<input type="text" class="form-control" id="search-query" placeholder="Search"
125+
autocomplete="off">
126+
</div>
127+
</form>
128+
</div>
129+
</nav>
130+
</header>
131+
<div role="main" class="container-fluid body-content hide-when-search">
132+
<div class="row justify-content-center">
133+
<div class="col-xl-7 article-wrapper doc-wrapper">
134+
<article class="content wrap" id="_content" data-uid="">
135+
<h1 id="page-not-found">Page Not Found</h1>
136+
137+
<p>We're sorry, but the page you're looking for cannot be found on the site.</p>
138+
<p>
139+
Feel free to <a href="https://github.com/SteeltoeOSS/Documentation/issues/new">open an issue in the Steeltoe Documentation GitHub Repository</a>
140+
with the URL or content you expected to exist, and we'll be happy to look into it.
141+
</p>
142+
143+
<p>
144+
<a href="/api/v4/welcome/">Return to v4 documentation</a>
145+
</p>
146+
</article>
147+
</div>
148+
</div>
149+
<footer>
150+
<div class="width-all bg-midnight-blue">
151+
<div class="width-90 container p-2">
152+
<div class="row no-gutters">
153+
<div class="col-10 col-sm-8">
154+
<div class="row no-gutters">
155+
<div class="col text-center small text-muted">
156+
Copyright &copy; 2005-2024 Broadcom. All Rights Reserved. The term
157+
&quot;Broadcom&quot; refers to Broadcom Inc. and/or its subsidiaries.<br>
158+
&bull;&nbsp;<a target="_blank" role=""
159+
href="https://www.vmware.com/help/privacy.html"
160+
class="text-muted nav-link">Privacy&nbsp;Policy</a>
161+
&bull;&nbsp;<a target="_blank" role="" class="text-muted"
162+
href="https://www.vmware.com/help/privacy/california-privacy-rights.html">Your&nbsp;California&nbsp;Privacy&nbsp;Rights</a>
163+
&bull;&nbsp;<a target="_blank" role=""
164+
href="https://www.vmware.com/help/legal.html"
165+
class="text-muted nav-link">Terms&nbsp;of&nbsp;Use</a>
166+
&bull;&nbsp;<a target="_blank" role=""
167+
href="https://steeltoe.io/SteeltoeTrademarkGuidelines.pdf"
168+
class="text-muted nav-link">Trademark&nbsp;Guidelines</a>
169+
</div>
170+
</div>
171+
</div>
172+
<div class="col-2 col-sm-4">
173+
<div class="row no-gutters">
174+
<div class="col">
175+
<a target="_blank" role="" href="https://github.com/SteeltoeOSS"
176+
title="Steeltoe on GitHub" class=" nav-link"><svg id="github-icon"
177+
width="100px" height="50px" viewbox="0 0 1 75"
178+
xmlns="http://www.w3.org/2000/svg">
179+
<defs>
180+
<style>
181+
#github-icon .cls-1 {
182+
fill: #ffffff;
183+
}
184+
185+
#github-icon .cls-2 {
186+
fill: #000000;
187+
fill-rule: evenodd;
188+
}
189+
</style>
190+
</defs>
191+
<path class="cls-1" d="M38,0a38,38,0,1,0,38,38A38,38,0,0,0,38,0Z">
192+
</path>
193+
<path class="cls-2"
194+
d="M38,15.59A22.95,22.95,0,0,0,30.71,60.3c1.15.21,1.57-.5,1.57-1.11s0-2,0-3.9c-6.38,1.39-7.73-3.07-7.73-3.07A6.09,6.09,0,0,0,22,48.86c-2.09-1.42.15-1.39.15-1.39a4.81,4.81,0,0,1,3.52,2.36c2,3.5,5.37,2.49,6.67,1.91a4.87,4.87,0,0,1,1.46-3.07c-5.09-.58-10.45-2.55-10.45-11.34a8.84,8.84,0,0,1,2.36-6.15,8.29,8.29,0,0,1,.23-6.07s1.92-.62,6.3,2.35a21.82,21.82,0,0,1,11.49,0c4.38-3,6.3-2.35,6.3-2.35a8.29,8.29,0,0,1,.23,6.07,8.84,8.84,0,0,1,2.36,6.15c0,8.81-5.37,10.75-10.48,11.32a5.46,5.46,0,0,1,1.56,4.25c0,3.07,0,5.54,0,6.29s.42,1.33,1.58,1.1A22.94,22.94,0,0,0,38,15.59Z">
195+
</path>
196+
</svg></a>
197+
</div>
198+
<div class="col">
199+
<a target="_blank" role="" href="https://twitter.com/steeltoeoss"
200+
title="Steeltoe on Twitter" class=" nav-link"><svg id="twitter-icon"
201+
width="100px" height="50px" viewbox="0 0 115 75"
202+
xmlns="http://www.w3.org/2000/svg">
203+
<defs>
204+
<style>
205+
#twitter-icon .cls-1 {
206+
fill: #ffffff;
207+
}
208+
209+
#twitter-icon .cls-2 {
210+
fill: #000000;
211+
}
212+
</style>
213+
</defs>
214+
<circle class="cls-1" cx="37.97" cy="37.97" r="37.97"></circle>
215+
<path class="cls-2"
216+
d="M55.2,22.73a15.43,15.43,0,0,1-4.88,1.91,7.56,7.56,0,0,0-5.61-2.49A7.78,7.78,0,0,0,37,30a7.56,7.56,0,0,0,.2,1.79,21.63,21.63,0,0,1-15.84-8.23,8,8,0,0,0,2.37,10.52,7.66,7.66,0,0,1-3.48-1v.09A7.84,7.84,0,0,0,26.45,41a7.54,7.54,0,0,1-2,.28A7.64,7.64,0,0,1,23,41.09a7.71,7.71,0,0,0,7.18,5.47,15.21,15.21,0,0,1-9.55,3.37,15.78,15.78,0,0,1-1.83-.11,21.41,21.41,0,0,0,11.78,3.54c14.13,0,21.86-12,21.86-22.42,0-.34,0-.68,0-1a15.67,15.67,0,0,0,3.83-4.08,14.9,14.9,0,0,1-4.41,1.24A7.8,7.8,0,0,0,55.2,22.73Z"
217+
data-name="Twitter" id="Twitter-2"></path>
218+
</svg></a>
219+
</div>
220+
</div>
221+
</div>
222+
</div>
223+
</div>
224+
</div>
225+
</footer>
226+
</div>
227+
</div>
228+
<script src="/styles/docfx.vendor.js"></script>
229+
230+
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.7.3/highlight.min.js"
231+
integrity="sha512-tL84mD+FR70jI7X8vYj5AfRqe0EifOaFUapjt1KvDaPLHgTlUZ2gQL/Tzvvn8HXuQm9oHYShJpNFdyJmH2yHrw=="
232+
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
233+
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.7.3/languages/bash.min.js"
234+
integrity="sha512-Hg0ufGEvn0AuzKMU0psJ1iH238iUN6THh7EI0CfA0n1sd3yu6PYet4SaDMpgzN9L1yQHxfB3yc5ezw3PwolIfA=="
235+
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
236+
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.7.3/languages/csharp.min.js"
237+
integrity="sha512-XEAR8fWA7XQhXnpFbCAngGSliIA99z3StbLuOlPa0XFp+WtVdSdgqPaPHF62W/DrhzFvCBmGIughaohXO0aDDA=="
238+
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
239+
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.7.3/languages/json.min.js"
240+
integrity="sha512-37sW1XqaJmseHAGNg4N4Y01u6g2do6LZL8tsziiL5CMXGy04Th65OXROw2jeDeXLo5+4Fsx7pmhEJJw77htBFg=="
241+
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
242+
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.7.3/languages/powershell.min.js"
243+
integrity="sha512-IC7cmpzlQ1USwqF55ri8lvo2jVDjtEOcWOHaqWZERWnmsf91v40WAE2eDWowLVBHuRg9K9WBQIcelaEOYciQ0w=="
244+
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
245+
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.7.3/languages/xml.min.js"
246+
integrity="sha512-0CjSoD/wLTBYgboRLU6i71o0LK21KZpkyu8bKCVUoP/2OFhYnPxYWqcATFpDtjikyuoxIhCYFgNJeh8w7rggTg=="
247+
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
248+
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.7.3/languages/yaml.min.js"
249+
integrity="sha512-w1UGeHQBy7zjHSSPA6To4w12xvKFANmA9yzShsF0k8wLoXYIVgDSTbGL+P8RwEW3ZFnibJsJsKcacTLOcyT7rQ=="
250+
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
251+
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/4.6.2/js/bootstrap.min.js"
252+
integrity="sha512-7rusk8kGPFynZWu26OKbTeI+QPoYchtxsmPeBqkHIEXJxeun4yJ4ISYe7C6sz9wdxeE1Gk3VxsIWgCZTc+vX3g=="
253+
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
254+
255+
<script src="/styles/highlightjs-badge.min.js"></script>
256+
<script src="/styles/docfx.js"></script>
257+
<script src="/styles/main1.js"></script>
258+
</body>
259+
260+
</html>

nginx.conf

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,11 @@ server {
2727
return 302 /api/v2/welcome;
2828
}
2929

30-
#error_page 404 /404.html;
30+
error_page 404 403 /404.html;
31+
location = /404.html {
32+
root /usr/share/nginx/html;
33+
internal;
34+
}
3135

3236
# redirect server error pages to the static page /50x.html
3337
#

0 commit comments

Comments
 (0)