Найден корректный robots.txt
Файл управления сканированием сайта роботами
?
Robots.txt указывает поисковым роботам, какие страницы сканировать, а какие — нет. Ошибки в файле могут случайно закрыть важные разделы от индексации.
Robots.txt настроен корректно. Размер файла: 9545 байт. Загружен за: 0сек.
Проверяемая страница не запрещена в robots.txt.
Показать содержимое robots.txt
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Fanburst — Private Beta</title>
<meta
name="description"
content="All your music and content in one place. We're opening up early access to the new Fanburst app — add your email and we'll send your beta invite."
/>
<meta property="og:title" content="Fanburst — Private Beta" />
<meta
property="og:description"
content="All your music and content in one place. Join the private beta."
/>
<meta property="og:type" content="website" />
<meta property="og:url" content="https://fanburst.com/" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap"
rel="stylesheet"
/>
<style>
:root {
--bg: #000000;
--text: #ffffff;
--muted: #9a9a9e;
--faint: #6a6a6e;
--pill: #161616;
--pill-border: #2a2a2a;
}
* {
box-sizing: border-box;
}
html,
body {
height: 100%;
margin: 0;
}
body {
display: flex;
align-items: center;
justify-content: center;
font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI",
Roboto, Helvetica, Arial, sans-serif;
color: var(--text);
background: var(--bg);
-webkit-font-smoothing: antialiased;
}
main {
width: 100%;
max-width: 40rem;
padding: 2rem 1.5rem;
text-align: center;
}
.eyebrow {
font-size: 0.8rem;
font-weight: 500;
letter-spacing: 0.28em;
text-transform: uppercase;
color: var(--muted);
margin-bottom: 2rem;
}
h1 {
font-size: clamp(3rem, 10vw, 5.5rem);
line-height: 1;
font-weight: 700;
letter-spacing: -0.03em;
margin: 0 0 1.5rem;
}
.sub {
font-size: clamp(1.05rem, 2.5vw, 1.3rem);
line-height: 1.45;
color: var(--muted);
margin: 0 auto 1.5rem;
max-width: 30rem;
}
.proof {
font-size: 0.95rem;
color: var(--muted);
margin: 0 0 2rem;
}
.proof b {
color: var(--text);
font-weight: 600;
}
/* Pill form */
form {
display: flex;
align-items: center;
gap: 0.5rem;
max-width: 30rem;
margin: 0 auto;
background: var(--pill);
border: 1px solid var(--pill-border);
border-radius: 9999px;
padding: 0.4rem 0.4rem 0.4rem 0.5rem;
transition: border-color 0.15s, box-shadow 0.15s;
}
form:focus-within {
border-color: #444;
box-shadow: 0 0 0 4px rgba(255, 255, 255, 0.06);
}
input[type="email"] {
flex: 1;
min-width: 0;
background: transparent;
border: 0;
outline: none;
color: var(--text);
font: inherit;
font-size: 1.05rem;
padding: 0.65rem 0.9rem;
}
input[type="email"]::placeholder {
color: var(--faint);
}
button {
flex-shrink: 0;
font: inherit;
font-size: 1rem;
font-weight: 700;
color: #000;
background: #fff;
border: 0;
border-radius: 9999px;
padding: 0.7rem 1.4rem;
cursor: pointer;
white-space: nowrap;
transition: opacity 0.15s, transform 0.08s;
}
button:hover {
opacity: 0.88;
}
button:active {
transform: translateY(1px);
}
button:disabled {
opacity: 0.5;
cursor: default;
}
.fineprint {
margin: 1.4rem 0 0;
font-size: 0.92rem;
color: var(--faint);
}
#msg {
min-height: 1rem;
margin: 1rem 0 0;
font-size: 0.9rem;
}
#msg.err {
color: #ff6b6b;
}
/* Success state */
.success {
display: none;
}
.success.show {
display: block;
}
.badge {
display: inline-flex;
align-items: center;
justify-content: center;
width: 3rem;
height: 3rem;
border-radius: 50%;
background: #fff;
color: #000;
font-size: 1.4rem;
font-weight: 700;
margin-bottom: 1rem;
}
.success h2 {
font-size: 1.6rem;
font-weight: 700;
letter-spacing: -0.02em;
margin: 0 0 0.5rem;
}
.success p {
color: var(--muted);
margin: 0 auto 1.4rem;
line-height: 1.5;
max-width: 26rem;
}
.share {
display: flex;
align-items: center;
gap: 0.5rem;
max-width: 30rem;
margin: 0 auto;
background: var(--pill);
border: 1px solid var(--pill-border);
border-radius: 9999px;
padding: 0.4rem 0.4rem 0.4rem 0.5rem;
}
.share input {
flex: 1;
min-width: 0;
background: transparent;
border: 0;
outline: none;
color: var(--muted);
font: inherit;
font-size: 0.95rem;
padding: 0.65rem 0.9rem;
}
@media (max-width: 30rem) {
form,
.share {
flex-direction: column;
border-radius: 1.4rem;
padding: 0.6rem;
gap: 0.6rem;
}
input[type="email"],
.share input {
text-align: center;
width: 100%;
}
button {
width: 100%;
}
}
</style>
</head>
<body>
<main>
<!-- Signup state -->
<div id="signup-state">
<div class="eyebrow">Private Beta</div>
<h1>Fanburst</h1>
<p class="sub">
All your music and content in one place. Add your email and we'll
send your beta invite.
</p>
<p class="proof">Join <b>50,000+</b> artists already on Fanburst</p>
<form id="signup" novalidate>
<input
id="email"
name="email"
type="email"
inputmode="email"
autocomplete="email"
placeholder="you@example.com"
aria-label="Email address"
required
/>
<button type="submit">Get early access</button>
</form>
<p class="fineprint">No spam — just your invite when it's ready.</p>
<p id="msg" role="status" aria-live="polite"></p>
</div>
<!-- Success state -->
<div class="success" id="success-state">
<div class="badge">✓</div>
<h2>You're on the list!</h2>
<p>Want to skip the line? Share your invite — every friend who joins moves you up.</p>
<div class="share">
<input id="share-url" type="text" readonly />
<button id="copy-btn" type="button">Copy link</button>
</div>
</div>
</main>
<script>
const params = new URLSearchParams(location.search);
const ref = params.get("ref");
const form = document.getElementById("signup");
const msg = document.getElementById("msg");
const button = form.querySelector("button");
form.addEventListener("submit", async (e) => {
e.preventDefault();
const email = document.getElementById("email").value.trim();
msg.className = "";
msg.textContent = "";
button.disabled = true;
try {
const res = await fetch("/subscribe", {
method: "POST",
headers: { "content-type": "application/json" },
body: JSON.stringify({ email, ref }),
});
const data = await res.json().catch(() => ({}));
if (res.ok && data.ok) {
showSuccess(data.shareUrl);
} else {
msg.className = "err";
msg.textContent = data.error || "Something went wrong. Please try again.";
button.disabled = false;
}
} catch {
msg.className = "err";
msg.textContent = "Network error. Please try again.";
button.disabled = false;
}
});
function showSuccess(shareUrl) {
document.getElementById("signup-state").style.display = "none";
const success = document.getElementById("success-state");
const input = document.getElementById("share-url");
const copyBtn = document.getElementById("copy-btn");
input.value = shareUrl || location.origin + "/";
success.classList.add("show");
copyBtn.addEventListener("click", async () => {
try {
await navigator.clipboard.writeText(input.value);
} catch {
input.select();
document.execCommand("copy");
}
copyBtn.textContent = "Copied!";
setTimeout(() => (copyBtn.textContent = "Copy link"), 1800);
});
}
</script>
<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v4513226cdae34746b4dedf0b4dfa099e1781791509496" integrity="sha512-ZE9pZaUXND66v380QUtch/5sE9tPFh2zg45pR2PB0CVkCtOREv2AJKkSidISWkysEuQ0EH8faUU5du78bx87UQ==" data-cf-beacon='{"version":"2024.11.0","token":"84c905f3c9d84f32a9bf74ee8e346fbc","r":1}' crossorigin="anonymous"></script>
</body>
</html>