Найден корректный robots.txt
Файл управления сканированием сайта роботами
?
Robots.txt указывает поисковым роботам, какие страницы сканировать, а какие — нет. Ошибки в файле могут случайно закрыть важные разделы от индексации.
Кол-во редиректов для файла robots.txt 3 слишком большое! Это может вызывать затруднение при индексации поисковыми роботами!
Проверяемая страница не запрещена в robots.txt.
Цепочка редиректов для файла robots.txt:
http://community.macmillanlearning.com/robots.txt
301 MovedPermanently
https://community.macmillanlearning.com/robots.txt
301 MovedPermanently
https://www.macmillanlearning.com/content-hub/highered/robots.txt
200 OK
Показать содержимое robots.txt
<!doctype html>
<html lang="en" data-beasties-container="">
<head>
<meta charset="utf-8">
<title>Macmillan Learning</title>
<base href="/content-hub/">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<link rel="icon" type="image/x-icon" href="https://prod-cat-files.macmillan.cloud/MediaResources/instructorcatalog/global/favicon.ico">
<!-- OneTrust Runtime Config - Generated from development environment (environment.dev.ts) -->
<style>
/* OneTrust custom styles - using !important to override OneTrust defaults */
#onetrust-pc-btn-handler {
width: 100% !important;
margin-bottom: 5px !important;
margin-top: 5px !important;
}
/* Additional selector for better coverage */
#onetrust-pc-sdk #onetrust-pc-btn-handler {
width: 100% !important;
margin-bottom: 5px !important;
margin-top: 5px !important;
}
</style>
<script type="text/javascript">
// Apply OneTrust styles after elements are created
(function() {
function applyOneTrustStyles() {
var btnHandler = document.getElementById('onetrust-pc-btn-handler');
if (btnHandler) {
btnHandler.style.width = '100%';
btnHandler.style.marginBottom = '20px';
btnHandler.style.marginTop = '5px';
}
}
// Try to apply styles immediately
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', function() {
setTimeout(applyOneTrustStyles, 1000);
});
} else {
setTimeout(applyOneTrustStyles, 1000);
}
// Use MutationObserver to watch for OneTrust elements being added
var observer = new MutationObserver(function(mutations) {
applyOneTrustStyles();
});
// Also listen for OneTrust events
if (window.OptanonWrapper) {
window.OptanonWrapper = function() {
setTimeout(applyOneTrustStyles, 500);
};
}
})();
</script>
<!-- OneTrust Runtime Config - Generated from development environment (environment.dev.ts) -->
<script type="text/javascript">
(function() {
try {
// Set OneTrust tokens in cookies based on development environment
// Tokens loaded from: environment.dev.ts
var tokens = {
macmillanlearning: '22b663f5-42e4-4ee9-a78b-35a2705d6077',
bfwpub: '0c9ffa0e-6d88-4e33-9dd5-2f9cf93c959b'
};
// Store tokens in cookies (expires in 1 year)
var expiryDate = new Date();
expiryDate.setFullYear(expiryDate.getFullYear() + 1);
var expires = 'expires=' + expiryDate.toUTCString();
// Set cookies for each token
if (tokens.macmillanlearning && tokens.macmillanlearning.trim() !== '') {
var macmillanCookie = 'onetrust_macmillan_token=' + encodeURIComponent(tokens.macmillanlearning) + '; ' + expires + '; path=/';
}
if (tokens.bfwpub && tokens.bfwpub.trim() !== '') {
var bfwpubCookie = 'onetrust_bfwpub_token=' + encodeURIComponent(tokens.bfwpub) + '; ' + expires + '; path=/';
}
// Also store in window object for immediate access
window.oneTrustTokens = tokens;
console.log('OneTrust Config: Tokens initialized', tokens);
} catch (e) {
console.error('OneTrust Config: Error setting tokens', e);
}
})();
</script>
<!-- OneTrust Cookies Consent Notice start -->
<script type="text/javascript">
// Load OneTrust tokens from cookies (set by runtime config script)
(function() {
// Helper function to get cookie value
function getCookie(name) {
var nameEQ = name + '=';
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) === ' ') c = c.substring(1, c.length);
if (c.indexOf(nameEQ) === 0) {
return decodeURIComponent(c.substring(nameEQ.length, c.length));
}
}
return null;
}
// Function to get tokens with retry logic
function getTokens() {
// Try to get tokens from window object first (set by config script), then from cookies
var tokens = window.oneTrustTokens;
if (!tokens) {
// Fallback to cookies if window object not available
tokens = {
macmillanlearning: getCookie('onetrust_macmillan_token'),
bfwpub: getCookie('onetrust_bfwpub_token')
};
if (tokens.macmillanlearning || tokens.bfwpub) {
console.log('OneTrust: Using tokens from cookies', tokens);
}
} else {
console.log('OneTrust: Using tokens from window.oneTrustTokens', tokens);
}
return tokens;
}
// Function to load OneTrust scripts with token
function loadOneTrustScripts(oneTrustToken) {
if (!oneTrustToken || !oneTrustToken.trim()) {
return false;
}
// Define OptanonWrapper function before loading scripts
function OptanonWrapper() { }
window.OptanonWrapper = OptanonWrapper;
// Load OtAutoBlock.js first (required before otSDKStub.js)
var script1 = document.createElement('script');
script1.type = 'text/javascript';
script1.src = 'https://cdn.cookielaw.org/consent/' + oneTrustToken + '/OtAutoBlock.js';
script1.onerror = function() {
console.error('OneTrust: Failed to load OtAutoBlock.js');
};
// Load otSDKStub.js after OtAutoBlock.js loads
script1.onload = function() {
var script2 = document.createElement('script');
script2.type = 'text/javascript';
script2.charset = 'UTF-8';
script2.src = 'https://cdn.cookielaw.org/scripttemplates/otSDKStub.js';
script2.setAttribute('data-domain-script', oneTrustToken);
script2.onerror = function() {
console.error('OneTrust: Failed to load otSDKStub.js');
};
document.head.appendChild(script2);
};
document.head.appendChild(script1);
return true;
}
// Function to determine and load token with delay
function initializeOneTrust() {
var tokens = getTokens();
var hosturl = window.location.href.toLowerCase();
var oneTrustToken = null;
// Determine which token to use based on URL
if (hosturl.includes('highered')) {
// OneTrust token for macmillanlearning.com / highered
oneTrustToken = '22b663f5-42e4-4ee9-a78b-35a2705d6077';
console.log('OneTrust: Using macmillanlearning token', oneTrustToken);
} else if (hosturl.includes('highschool')) {
// OneTrust token for bfwpub.com / highschool
oneTrustToken = '0c9ffa0e-6d88-4e33-9dd5-2f9cf93c959b';
console.log('OneTrust: Using bfwpub token', oneTrustToken);
}
// Only load scripts if token is valid
if (loadOneTrustScripts(oneTrustToken)) {
return true;
} else {
if (!oneTrustToken) {
console.log('OneTrust: No token configured for hosturl: ' + hosturl);
var tokens = getTokens();
console.log('OneTrust: Available tokens - macmillanlearning: ' + (tokens.macmillanlearning ? '✓' : '✗') + ', bfwpub: ' + (tokens.bfwpub ? '✓' : '✗'));
} else {
console.error('OneTrust: Invalid token value');
}
return false;
}
}
// Initialize with delay to ensure tokens are available
// Retry up to 5 times with increasing delays (100ms, 200ms, 500ms, 1000ms, 2000ms)
var retryCount = 0;
var maxRetries = 5;
var delays = [100, 200, 500, 1000, 2000];
function tryInitialize() {
if (initializeOneTrust()) {
console.log('OneTrust: Successfully initialized');
return;
}
retryCount++;
if (retryCount < maxRetries) {
var delay = delays[retryCount - 1] || 2000;
console.log('OneTrust: Tokens not ready, retrying in ' + delay + 'ms (attempt ' + retryCount + '/' + maxRetries + ')');
setTimeout(tryInitialize, delay);
} else {
console.warn('OneTrust: Failed to initialize after ' + maxRetries + ' attempts. Tokens may not be available.');
}
}
// Start initialization with initial delay
setTimeout(tryInitialize, delays[0] || 100);
})();
</script>
<!-- OneTrust Cookies Consent Notice end for macmillanlearning.com and bfwpub.com -->
<!-- Google Tag Manager -->
<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-K8LXW46');</script>
<!-- End Google Tag Manager -->
<link rel="stylesheet" href="styles-LK7FUN2L.css" media="print" onload="this.media='all'"><noscript><link rel="stylesheet" href="styles-LK7FUN2L.css"></noscript></head>
<body ngcm="">
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-K8LXW46" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->
<app-root></app-root>
<script src="polyfills-5CFQRCPP.js" type="module"></script><script src="main-U74WX2IA.js" type="module"></script></body>
</html>