Найден корректный robots.txt
Файл управления сканированием сайта роботами
?
Robots.txt указывает поисковым роботам, какие страницы сканировать, а какие — нет. Ошибки в файле могут случайно закрыть важные разделы от индексации.
Robots.txt настроен корректно. Размер файла: 15459 байт. Загружен за: 0сек.
Проверяемая страница не запрещена в robots.txt.
Цепочка редиректов для файла robots.txt:
http://fd.racer.com/robots.txt
301 MovedPermanently
https://fd.racer.com/robots.txt
200 OK
Показать содержимое robots.txt
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Watch Formula Drift Live - Free on RACER+</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
html {
overflow-x: hidden;
}
:root {
/* Light mode colors (default) */
--bg-primary: #ffffff;
--bg-secondary: #f9fafb;
--text-primary: #111827;
--text-secondary: #6b7280;
--text-muted: #9ca3af;
--border-color: rgba(220,38,38,0.2);
--hero-visual-bg: linear-gradient(135deg, rgba(220,38,38,0.08) 0%, rgba(255,255,255,0) 100%);
--hero-visual-text: rgba(220,38,38,0.08);
--logo-slash-color: #d1d5db;
--logo-text-color: #111827;
--h1-gradient: linear-gradient(135deg, #111827 0%, #4b5563 100%);
--btn-secondary-bg: #111827;
--btn-secondary-text: #ffffff;
--btn-secondary-hover-bg: #1f2937;
}
@media (prefers-color-scheme: dark) {
:root {
/* Dark mode colors for system preference */
--bg-primary: #0a0a0a;
--bg-secondary: #111111;
--text-primary: #ffffff;
--text-secondary: #d1d5db;
--text-muted: #9ca3af;
--border-color: rgba(220,38,38,0.2);
--hero-visual-bg: linear-gradient(135deg, rgba(220,38,38,0.1) 0%, rgba(0,0,0,0) 100%);
--hero-visual-text: rgba(220,38,38,0.1);
--logo-slash-color: #333;
--logo-text-color: #ffffff;
--h1-gradient: linear-gradient(135deg, #fff 0%, #999 100%);
--btn-secondary-bg: #ffffff;
--btn-secondary-text: #000000;
--btn-secondary-hover-bg: #f3f4f6;
}
}
/* Manual dark mode override */
[data-theme="dark"] {
--bg-primary: #0a0a0a;
--bg-secondary: #111111;
--text-primary: #ffffff;
--text-secondary: #d1d5db;
--text-muted: #9ca3af;
--border-color: rgba(220,38,38,0.2);
--hero-visual-bg: linear-gradient(135deg, rgba(220,38,38,0.1) 0%, rgba(0,0,0,0) 100%);
--hero-visual-text: rgba(220,38,38,0.1);
--logo-slash-color: #333;
--logo-text-color: #ffffff;
--h1-gradient: linear-gradient(135deg, #fff 0%, #999 100%);
--btn-secondary-bg: #ffffff;
--btn-secondary-text: #000000;
--btn-secondary-hover-bg: #f3f4f6;
}
/* Manual light mode override */
[data-theme="light"] {
--bg-primary: #ffffff;
--bg-secondary: #f9fafb;
--text-primary: #111827;
--text-secondary: #6b7280;
--text-muted: #9ca3af;
--border-color: rgba(220,38,38,0.2);
--hero-visual-bg: linear-gradient(135deg, rgba(220,38,38,0.08) 0%, rgba(255,255,255,0) 100%);
--hero-visual-text: rgba(220,38,38,0.08);
--logo-slash-color: #d1d5db;
--logo-text-color: #111827;
--h1-gradient: linear-gradient(135deg, #111827 0%, #4b5563 100%);
--btn-secondary-bg: #111827;
--btn-secondary-text: #ffffff;
--btn-secondary-hover-bg: #1f2937;
}
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
background: var(--bg-primary);
color: var(--text-primary);
transition: background-color 0.3s ease, color 0.3s ease;
overflow-x: hidden;
width: 100%;
}
.container {
min-height: 100vh;
max-width: 1400px;
margin: 0 auto;
padding: 60px 40px;
}
.nav {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 80px;
}
.logo-group {
display: flex;
align-items: center;
gap: 20px;
}
.logo-fd {
display: flex;
align-items: center;
}
.logo-fd img {
height: 34px;
width: auto;
display: block;
}
.logo-fd-text {
font-size: 20px;
font-weight: 900;
background: linear-gradient(135deg, #dc2626 0%, #ef4444 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
letter-spacing: 1px;
display: none;
}
/* Always show dark logo, hide text fallback */
.logo-fd-text {
display: none;
}
.logo-slash {
font-size: 26px;
color: var(--logo-slash-color);
transition: color 0.3s ease;
}
.logo-racer {
font-size: 26px;
font-weight: 700;
color: var(--logo-text-color);
letter-spacing: 1px;
transition: color 0.3s ease;
}
.theme-toggle {
display: none; /* Hidden - always default to dark mode */
background: transparent;
border: none;
border-radius: 50%;
padding: 8px;
cursor: pointer;
color: var(--text-muted);
transition: all 0.2s ease;
align-items: center;
justify-content: center;
opacity: 0.5;
}
.theme-toggle:hover {
opacity: 1;
background: var(--bg-secondary);
}
.theme-icon {
font-size: 20px;
display: block;
}
.theme-label {
display: none;
}
.hero-section {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 80px;
align-items: center;
margin-bottom: 100px;
}
.hero-content h1 {
font-size: 64px;
font-weight: 800;
line-height: 1.1;
margin-bottom: 30px;
background: var(--h1-gradient);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
transition: background 0.3s ease;
}
.hero-content h1 .highlight {
background: linear-gradient(135deg, #dc2626 0%, #ef4444 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.hero-content h2 {
font-size: 24px;
font-weight: 400;
color: var(--text-muted);
margin-bottom: 40px;
line-height: 1.6;
transition: color 0.3s ease;
}
.hero-visual {
position: relative;
width: 100%;
padding-bottom: 56.25%;
border-radius: 20px;
overflow: hidden;
border: 1px solid var(--border-color);
transition: border-color 0.3s ease;
background: #000;
}
.hero-visual video {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
object-fit: cover;
border: none;
}
.content-section {
max-width: 900px;
margin: 0 auto 80px;
text-align: center;
}
.content-block {
margin-bottom: 40px;
}
.content-block p {
font-size: 22px;
line-height: 1.8;
color: var(--text-secondary);
margin-bottom: 20px;
transition: color 0.3s ease;
}
.content-block strong {
color: var(--text-primary);
font-weight: 600;
}
.cta-section {
margin-top: 40px;
display: flex;
flex-direction: column;
gap: 16px;
}
.btn {
font-size: 18px;
font-weight: 600;
padding: 20px 40px;
border: none;
border-radius: 8px;
cursor: pointer;
text-decoration: none;
text-align: center;
transition: all 0.2s ease;
display: block;
}
.btn-primary {
background: linear-gradient(135deg, #dc2626 0%, #b91c1c 100%);
color: #fff;
}
.btn-primary:hover {
transform: translateY(-2px);
box-shadow: 0 10px 30px rgba(220,38,38,0.4);
}
.btn-secondary {
background: var(--btn-secondary-bg);
color: var(--btn-secondary-text);
transition: background 0.2s ease, color 0.2s ease;
}
.btn-secondary:hover {
background: var(--btn-secondary-hover-bg);
transform: translateY(-2px);
}
.scroll-indicator {
display: none;
}
@keyframes bounce {
0%, 20%, 50%, 80%, 100% {
transform: translateY(0) translateX(-50%);
}
40% {
transform: translateY(-10px) translateX(-50%);
}
60% {
transform: translateY(-5px) translateX(-50%);
}
}
@media (max-width: 968px) {
body {
padding-bottom: 90px;
width: 100vw;
}
.container {
padding: 16px;
width: 100%;
max-width: 100vw;
overflow-x: hidden;
}
.nav {
margin-bottom: 24px;
flex-wrap: wrap;
gap: 10px;
justify-content: center;
}
.logo-group {
gap: 8px;
}
.logo-fd img {
height: 26px;
}
.logo-fd-text {
font-size: 16px;
}
.logo-racer {
font-size: 16px;
}
.logo-slash {
font-size: 16px;
}
.theme-toggle {
padding: 6px;
}
.theme-icon {
font-size: 18px;
}
.hero-section {
grid-template-columns: 1fr;
gap: 0;
margin-bottom: 32px;
width: 100%;
max-width: 100%;
}
.hero-content {
order: 2;
}
.hero-content h1 {
font-size: 32px;
margin-bottom: 16px;
line-height: 1.1;
letter-spacing: -0.5px;
}
.hero-content h2 {
font-size: 16px;
margin-bottom: 24px;
line-height: 1.45;
}
.hero-visual {
order: 1;
margin-bottom: 32px;
border-radius: 12px;
padding-bottom: 56.25%;
}
.content-section {
margin-bottom: 48px;
}
.content-block {
margin-bottom: 32px;
}
.content-block p {
font-size: 18px;
line-height: 1.65;
margin-bottom: 0;
font-weight: 400;
}
.content-block:first-child p {
font-size: 19px;
font-weight: 500;
}
.cta-section {
position: fixed;
bottom: 0;
left: 0;
right: 0;
width: 100vw;
margin: 0;
max-width: 100vw;
padding: 12px 16px 16px;
background: var(--bg-primary);
border-top: 1px solid var(--border-color);
box-shadow: 0 -4px 12px rgba(0,0,0,0.1);
z-index: 1000;
display: flex;
flex-direction: column;
gap: 0;
}
.btn {
font-size: 17px;
padding: 16px 24px;
font-weight: 700;
width: 100%;
margin: 0;
box-sizing: border-box;
}
.scroll-indicator {
display: block;
position: fixed;
bottom: 100px;
left: 50%;
transform: translateX(-50%);
z-index: 999;
opacity: 1;
transition: opacity 0.3s ease;
}
.scroll-indicator.hidden {
opacity: 0;
pointer-events: none;
}
.content-section::after {
content: '';
position: fixed;
bottom: 0;
left: 0;
right: 0;
height: 150px;
background: linear-gradient(to bottom, transparent 0%, var(--bg-primary) 80%);
pointer-events: none;
z-index: 998;
}
}
</style>
</head>
<body>
<div class="container">
<nav class="nav">
<div class="logo-group">
<div class="logo-fd">
<img src="./assets/formula-drift-logo-dark.svg" alt="Formula Drift" style="height: 52px; width: auto;" />
</div>
<div class="logo-slash">/</div>
<div class="logo-racer"><img src="./assets/racer-wordmark.svg" alt="RACER" style="height: 22px; width: auto; margin-top: 6px;" /></div>
</div>
<button class="theme-toggle" id="themeToggle" aria-label="Toggle theme">
<span class="theme-icon" id="themeIcon">🌙</span>
<span class="theme-label" id="themeLabel">Dark</span>
</button>
</nav>
<section class="hero-section">
<div class="hero-content">
<h1>Watch <span class="highlight">Formula Drift</span> Live — Free on RACER+</h1>
<h2>Every event. Every battle. Right here on the RACER+ app.</h2>
<div class="cta-section">
<a href="https://racerplus.com/signup?licences=5862" class="btn btn-primary">Watch Free Now on RACER+ →</a>
</div>
</div>
<div class="hero-visual">
<video
autoplay
muted
loop
playsinline
preload="auto">
<source src="https://microsites.racer.com/fd-racer-com/2026-formula-drift-generic-sat-10s.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
</div>
</section>
<section class="content-section">
<div class="content-block">
<p><strong>Formula Drift is completely free to watch on RACER+</strong> — no subscription required.</p>
</div>
<div class="content-block">
<p>Enjoy all practice, qualifying, and the Top 32 from every round at no cost.</p>
</div>
<div class="content-block">
<p>Want to see the Final 16 battles and the epic fight for the podium? Simply sign up with your email. It takes 10 seconds and unlocks the rest of every event instantly.</p>
</div>
</section>
</div>
<div class="scroll-indicator" id="scrollIndicator">
<svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="color: #dc2626; animation: bounce 2s infinite;">
<polyline points="6 9 12 15 18 9"></polyline>
</svg>
</div>
<script>
// Theme management
const themeToggle = document.getElementById('themeToggle');
const themeIcon = document.getElementById('themeIcon');
const themeLabel = document.getElementById('themeLabel');
const body = document.body;
// Check for saved theme preference or default to dark mode
const getInitialTheme = () => {
const savedTheme = localStorage.getItem('theme');
if (savedTheme) {
return savedTheme;
}
// Always default to dark mode
return 'dark';
};
// Apply theme
const applyTheme = (theme) => {
body.setAttribute('data-theme', theme);
localStorage.setItem('theme', theme);
if (theme === 'dark') {
themeIcon.textContent = '☀️';
themeLabel.textContent = 'Light';
} else {
themeIcon.textContent = '🌙';
themeLabel.textContent = 'Dark';
}
};
// Initialize theme
applyTheme(getInitialTheme());
// Toggle theme
themeToggle.addEventListener('click', () => {
const currentTheme = body.getAttribute('data-theme');
const newTheme = currentTheme === 'dark' ? 'light' : 'dark';
applyTheme(newTheme);
});
// Listen for system theme changes
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', (e) => {
// Only auto-switch if user hasn't manually set a preference
if (!localStorage.getItem('theme')) {
applyTheme(e.matches ? 'dark' : 'light');
}
});
// Scroll indicator management
const scrollIndicator = document.getElementById('scrollIndicator');
let hasScrolled = false;
window.addEventListener('scroll', () => {
const scrollY = window.scrollY;
// Fade out after scrolling 100px
if (scrollY > 100 && !hasScrolled) {
scrollIndicator.classList.add('hidden');
hasScrolled = true;
} else if (scrollY <= 100 && hasScrolled) {
scrollIndicator.classList.remove('hidden');
hasScrolled = false;
}
});
</script>
</body>
</html>