Найден корректный robots.txt
Файл управления сканированием сайта роботами
?
Robots.txt указывает поисковым роботам, какие страницы сканировать, а какие — нет. Ошибки в файле могут случайно закрыть важные разделы от индексации.
Кол-во редиректов для файла robots.txt 3 слишком большое! Это может вызывать затруднение при индексации поисковыми роботами!
Проверяемая страница не запрещена в robots.txt.
Цепочка редиректов для файла robots.txt:
http://developer.musehub.com/robots.txt
301 MovedPermanently
https://developer.musehub.com/robots.txt
307 RedirectKeepVerb
https://app.gitbook.com/o/zOafIugye8FLH4Vd26zj/s/-Lh5Cj9as0cknpKgwDAy/
200 OK
Показать содержимое robots.txt
<!DOCTYPE html><html lang="en" class="notranslate" translate="no"><head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>GitBook</title>
<link rel="manifest" href="/public/manifest.json">
<link rel="icon" sizes="512x512" href="/public/images/icon-512.png" media="(prefers-color-scheme: light)">
<link rel="icon" sizes="512x512" href="/public/images/icon-512-dark.png" media="(prefers-color-scheme: dark)">
<link rel="apple-touch-icon" sizes="512x512" href="/public/images/icon-ios/icon_512x512.png">
<link rel="apple-touch-icon" sizes="512x512@2x" href="/public/images/icon-ios/icon_512x512@2x.png">
<meta name="apple-mobile-web-app-status-bar-style" content="default">
<meta name="apple-mobile-web-app-title" content="GitBook">
<meta name="theme-color" content="#f7f7f7">
<meta name="description" content="GitBook">
<meta name="robots" content="noindex, nofollow">
<link rel="preconnect" href="https://v2-content.gitbook.com">
<!--
Google Tag Manager tracking script to track conversions from the site.
See https://gitbook.slack.com/archives/C07AQA4256G/p1721923712258389 for more info
-->
<script>
(function (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);
})(window, document, 'script', 'dataLayer', 'GTM-PVD2ZHVC');
</script>
<script>
(async function() {
// Splash screen modifications
// 1. Adapt to dark/light theme
let theme = null;
try {
theme = localStorage.getItem('userThemeAtom');
if (theme === null) {
theme = localStorage.getItem('@recoil/userThemeAtom');
if (theme !== null) {
localStorage.setItem('userThemeAtom', theme);
}
}
} catch (e) {
// Ignore storage errors and use the system theme.
}
if (theme?.includes('dark')) {
document.documentElement.classList.add('theme-color-dark');
} else if (theme?.includes('light')) {
document.documentElement.classList.add('theme-color-light');
}
function hideSidebar() {
const sidebar = document.querySelector('.sidebar');
if (sidebar) sidebar.style.display = 'none';
}
function applySidebarSizing() {
let sidebarWidth;
let isSidebarCollapsed = false;
function applySidebarWidth() {
const sidebar = document.querySelector('.sidebar');
if (!sidebar) return;
if (isSidebarCollapsed) {
sidebar.style.setProperty('--sidebar-width', '0px')
} else if (sidebarWidth) {
sidebar.style.setProperty('--sidebar-width', sidebarWidth + 'px');
}
}
try {
const readStoredValue = (key) => {
const rawValue = localStorage.getItem(key);
if (rawValue === null) return undefined;
try {
return JSON.parse(rawValue);
} catch (e) {
return undefined;
}
};
const storedWidth = readStoredValue('sidebarWidth');
const storedCollapsed = readStoredValue('sidebarCollapsed');
if (storedWidth !== undefined) sidebarWidth = storedWidth;
if (storedCollapsed !== undefined) isSidebarCollapsed = storedCollapsed;
} catch (e) {
// Ignore storage errors and keep the splash defaults.
}
applySidebarWidth();
}
// Leave early if no indexedDB
if (!('indexedDB' in window)) {
hideSidebar();
return;
}
const path = window.location.pathname;
const urlParams = new URLSearchParams(window.location.search);
const hasAuthToken = urlParams.has('auth_token');
// Detect SAML auth flows (auth_token without apiTestMode) to skip problematic Firebase checks
const isSamlAuth = hasAuthToken && !urlParams.has('apiTestMode');
// 2. Check auth state. Sign-in page layout doesn't match editor, so we need to hide the sidebar there. Skip Firebase auth checks for SAML flows to avoid race conditions in CI
if (!isSamlAuth) {
let authCheckTimeout;
try {
const firebaseDbName = 'firebaseLocalStorageDb';
const firebaseRequest = indexedDB.open(firebaseDbName, 1);
// Add timeout to prevent blocking page render in CI
authCheckTimeout = setTimeout(() => {
hideSidebar();
}, 1000);
firebaseRequest.onsuccess = (event) => {
if (authCheckTimeout !== undefined) {
clearTimeout(authCheckTimeout);
authCheckTimeout = undefined;
}
const db = event.target.result;
const objectStoreNames = Array.from(db.objectStoreNames);
if (!objectStoreNames.length) {
return hideSidebar();
}
const transaction = db.transaction(objectStoreNames, 'readonly');
const store = transaction.objectStore(objectStoreNames[0]);
// Look for Firebase auth user key pattern
const getAllRequest = store.getAllKeys();
getAllRequest.onsuccess = () => {
const keys = getAllRequest.result;
const authKey = keys.find(key =>
typeof key === 'string' &&
key.includes('firebase:authUser:') &&
key.includes('[DEFAULT]')
);
if (!authKey) {
return hideSidebar();
}
// Check if the auth user actually has data
const getRequest = store.get(authKey);
getRequest.onsuccess = () => {
if (!getRequest.result) {
return hideSidebar();
}
// At this point, user is logged in. Apply sidebar width/collapsed logic.
applySidebarSizing();
};
};
};
firebaseRequest.onerror = () => {
if (authCheckTimeout !== undefined) {
clearTimeout(authCheckTimeout);
authCheckTimeout = undefined;
}
hideSidebar();
};
} catch (e) {
if (authCheckTimeout !== undefined) {
clearTimeout(authCheckTimeout);
authCheckTimeout = undefined;
}
hideSidebar();
}
} else {
// For SAML auth flows, still apply sidebar sizing but skip Firebase auth checks
// This ensures SAML users get their sidebar preferences without CI race conditions
applySidebarSizing();
}
// Adds header nav bars (Space, OpenAPI, Site, Integration detail page)
const pagesWithHeader = ['/openapi/', '/s/', '/site', '/integrations/'];
const showSpaceheader = pagesWithHeader.some(route => path.includes(route));
if (showSpaceheader) {
document.documentElement.classList.add('show-spaceheader');
}
})();
</script>
<link rel="stylesheet" href="/public/dist/index-OGULNGFN.css"></head>
<body>
<!-- Google Tag Manager -->
<noscript>
<iframe src="https://www.googletagmanager.com/ns.html?id=GTM-PVD2ZHVC" height="0" width="0" style="display:none;visibility:hidden"></iframe>
</noscript>
<div id="root" class="app-root-container">
<div id="gitbook-root" class="app-root"></div>
<div id="portals-root"></div>
</div>
<div class="gitbook-splashscreen">
<div class="sidebar">
<div class="sidebar-header-skeleton">
<div class="org-switcher-skeleton shimmer-dark"></div>
</div>
</div>
<div class="application">
<div class="spaceheader"></div>
</div>
</div>
<script src="/public/dist/index-MMRQCXPJ.min.js" type="module"></script></body></html>