Найден корректный robots.txt
Файл управления сканированием сайта роботами
?
Robots.txt указывает поисковым роботам, какие страницы сканировать, а какие — нет. Ошибки в файле могут случайно закрыть важные разделы от индексации.
Кол-во редиректов для файла robots.txt 4 слишком большое! Это может вызывать затруднение при индексации поисковыми роботами!
Проверяемая страница не запрещена в robots.txt.
Цепочка редиректов для файла robots.txt:
http://mail.spbstu.ru/robots.txt
301 MovedPermanently
https://mail.spbstu.ru/robots.txt
302 Found
https://mail.spbstu.ru/owa/robots.txt
302 Found
https://adfs.spbstu.ru/adfs/ls/?wa=wsignin1.0&wtrealm=https%3a%2f%2fmail.spbstu.ru%2fowa%2f&wctx=rm%3d0%26id%3dpassive%26ru%3d%252fowa%252frobots.txt&wct=2026-08-20T00%3a54%3a49Z
200 OK
Показать содержимое robots.txt
<!DOCTYPE html>
<html lang="ru-RU">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=1"/>
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
<meta http-equiv="cache-control" content="no-cache,no-store"/>
<meta http-equiv="pragma" content="no-cache"/>
<meta http-equiv="expires" content="-1"/>
<meta name='mswebdialog-title' content='Выполняется подключение к Peter the Great St.Petersburg Polytechnic University'/>
<title>Вход</title>
<script type='text/javascript'>
//<![CDATA[
function LoginErrors(){this.userNameFormatError = 'Введите идентификатор пользователя в формате \u0026quot;домен\\пользователя\u0026quot; или \u0026quot;пользователь@домен\u0026quot;.'; this.passwordEmpty = 'Введите пароль.'; this.passwordTooLong = 'Слишком длинный пароль (символов: более 128).';}; var maxPasswordLength = 128;
//]]>
</script>
<script type='text/javascript'>
//<![CDATA[
// Copyright (c) Microsoft Corporation. All rights reserved.
function InputUtil(errTextElementID, errDisplayElementID) {
if (!errTextElementID) errTextElementID = 'errorText';
if (!errDisplayElementID) errDisplayElementID = 'error';
this.hasFocus = false;
this.errLabel = document.getElementById(errTextElementID);
this.errDisplay = document.getElementById(errDisplayElementID);
};
InputUtil.prototype.canDisplayError = function () {
return this.errLabel && this.errDisplay;
}
InputUtil.prototype.checkError = function () {
if (!this.canDisplayError){
throw new Error ('Error element not present');
}
if (this.errLabel && this.errLabel.innerHTML) {
this.errDisplay.style.display = '';
var cause = this.errLabel.getAttribute('for');
if (cause) {
var causeNode = document.getElementById(cause);
if (causeNode && causeNode.value) {
causeNode.focus();
this.hasFocus = true;
}
}
}
else {
this.errDisplay.style.display = 'none';
}
};
InputUtil.prototype.setInitialFocus = function (input) {
if (this.hasFocus) return;
var node = document.getElementById(input);
if (node) {
if ((/^\s*$/).test(node.value)) {
node.focus();
this.hasFocus = true;
}
}
};
InputUtil.prototype.setError = function (input, errorMsg) {
if (!this.canDisplayError) {
throw new Error('Error element not present');
}
input.focus();
if (errorMsg) {
this.errLabel.innerHTML = errorMsg;
}
this.errLabel.setAttribute('for', input.id);
this.errDisplay.style.display = '';
};
InputUtil.makePlaceholder = function (input) {
var ua = navigator.userAgent;
if (ua != null &&
(ua.match(/MSIE 9.0/) != null ||
ua.match(/MSIE 8.0/) != null ||
ua.match(/MSIE 7.0/) != null)) {
var node = document.getElementById(input);
if (node) {
var placeholder = node.getAttribute("placeholder");
if (placeholder != null && placeholder != '') {
var label = document.createElement('input');
label.type = "text";
label.value = placeholder;
label.readOnly = true;
label.style.position = 'absolute';
label.style.borderColor = 'transparent';
label.className = node.className + ' hint';
label.tabIndex = -1;
label.onfocus = function () { this.nextSibling.focus(); };
node.style.position = 'relative';
node.parentNode.style.position = 'relative';
node.parentNode.insertBefore(label, node);
node.onkeyup = function () { InputUtil.showHint(this); };
node.onblur = function () { InputUtil.showHint(this); };
node.style.background = 'transparent';
node.setAttribute("placeholder", "");
InputUtil.showHint(node);
}
}
}
};
InputUtil.focus = function (inputField) {
var node = document.getElementById(inputField);
if (node) node.focus();
};
InputUtil.hasClass = function(node, clsName) {
return node.className.match(new RegExp('(\\s|^)' + clsName + '(\\s|$)'));
};
InputUtil.addClass = function(node, clsName) {
if (!this.hasClass(node, clsName)) node.className += " " + clsName;
};
InputUtil.removeClass = function(node, clsName) {
if (this.hasClass(node, clsName)) {
var reg = new RegExp('(\\s|^)' + clsName + '(\\s|$)');
node.className = node.className.replace(reg, ' ');
}
};
InputUtil.showHint = function (node, gotFocus) {
if (node.value && node.value != '') {
node.previousSibling.style.display = 'none';
}
else {
node.previousSibling.style.display = '';
}
};
InputUtil.updatePlaceholder = function (input, placeholderText) {
var node = document.getElementById(input);
if (node) {
var ua = navigator.userAgent;
if (ua != null &&
(ua.match(/MSIE 9.0/) != null ||
ua.match(/MSIE 8.0/) != null ||
ua.match(/MSIE 7.0/) != null)) {
var label = node.previousSibling;
if (label != null) {
label.value = placeholderText;
}
}
else {
node.placeholder = placeholderText;
}
}
};
//]]>
</script>
<link rel="stylesheet" type="text/css" href="/adfs/portal/css/style.css?id=90C728EC7FD600097D8A34199F6C50249511A1CC8E7D464B4D95E78B51E92F28" /><style>.illustrationClass {background-image:url(/adfs/portal/illustration/illustration.png?id=183128A3C941EDE3D9199FA37D6AA90E0A7DFE101B37D10B4FEDA0CF35E11AFD);}</style>
</head>
<body dir="ltr" class="body">
<div id="noScript" style="position:static; width:100%; height:100%; z-index:100">
<h1>Требуется поддержка JavaScript</h1>
<p>Требуется поддержка JavaScript. Этот веб-браузер не поддерживает JavaScript или в веб-браузере не включена поддержка JavaScript.</p>
<p>Чтобы узнать, поддерживает ли веб-браузер JavaScript, или включить поддержку JavaScript, обратитесь к разделу справки веб-браузера.</p>
</div>
<script type="text/javascript" language="JavaScript">
document.getElementById("noScript").style.display = "none";
</script>
<div id="fullPage">
<div id="brandingWrapper" class="float">
<div id="branding"></div>
</div>
<div id="contentWrapper" class="float">
<div id="content">
<div id="header">
<h4>Peter the Great St.Petersburg Polytechnic University</h4>
</div>
<main>
<div id="workArea">
<div id="authArea" class="groupMargin">
<div id="loginArea">
<div id="loginMessage" class="groupMargin">Вход</div>
<form method="post" id="loginForm" autocomplete="off" novalidate="novalidate" onKeyPress="if (event && event.keyCode == 13) Login.submitLoginRequest();" action="/adfs/ls/?wa=wsignin1.0&wtrealm=https%3a%2f%2fmail.spbstu.ru%2fowa%2f&wctx=rm%3d0%26id%3dpassive%26ru%3d%252fowa%252frobots.txt&wct=2026-08-20T00%3a54%3a49Z&client-request-id=4f3b51c5-ec3b-4e96-5e03-0080020000ed" >
<div id="error" class="fieldMargin error smallText">
<span id="errorText" for="" aria-live="assertive" role="alert"></span>
</div>
<div id="formsAuthenticationArea">
<div id="userNameArea">
<label id="userNameInputLabel" for="userNameInput" class="hidden">Учетная запись пользователя</label>
<input id="userNameInput" name="UserName" type="email" value="" tabindex="1" class="text fullWidth"
spellcheck="false" placeholder="proverka@example.com" autocomplete="off"/>
</div>
<div id="passwordArea">
<label id="passwordInputLabel" for="passwordInput" class="hidden">Пароль</label>
<input id="passwordInput" name="Password" type="password" tabindex="2" class="text fullWidth"
placeholder="Пароль" autocomplete="off"/>
</div>
<div id="kmsiArea" style="display:none">
<input type="checkbox" name="Kmsi" id="kmsiInput" value="true" tabindex="3" />
<label for="kmsiInput">Оставаться в системе</label>
</div>
<div id="submissionArea" class="submitMargin">
<span id="submitButton" class="submit" tabindex="4" role="button"
onKeyPress="if (event && event.keyCode == 32) Login.submitLoginRequest();"
onclick="return Login.submitLoginRequest();">Вход</span>
</div>
</div>
<input id="optionForms" type="hidden" name="AuthMethod" value="FormsAuthentication"/>
</form>
<div id="authOptions">
<form id="options" method="post" action="https://adfs.spbstu.ru:443/adfs/ls/?wa=wsignin1.0&wtrealm=https%3a%2f%2fmail.spbstu.ru%2fowa%2f&wctx=rm%3d0%26id%3dpassive%26ru%3d%252fowa%252frobots.txt&wct=2026-08-20T00%3a54%3a49Z&client-request-id=4f3b51c5-ec3b-4e96-5e03-0080020000ed">
<script type="text/javascript">
function SelectOption(option) {
var w = document.getElementById('waitingWheelDiv');
if(w) w.style.display = 'inline';
var i = document.getElementById('optionSelection');
i.value = option;
document.forms['options'].submit();
return false;
}
</script>
<input id="optionSelection" type="hidden" name="AuthMethod" />
<input id="userNameInputOptionsHolder" name="UserName" value="" type="hidden"/>
<div id='authOptionLinks' class='groupMargin'><a class="actionLink" href="#" id="CertificateAuthentication" role="button" onclick="SelectOption('CertificateAuthentication'); return false;">Вход с использованием сертификата</a><div id="waitingWheelDiv" style="display: none;"><div id="WaitingWheel">
<!-- NOTE: This style portion is identical to cookie pull page, they are not in shared css file because of legacy dependancies for custom themes-->
<!-- CSS for small "waiting" wheel -->
<style>
#floatingCirclesG {
position: relative;
width: 125px;
height: 125px;
margin: auto;
transform: scale(0.4);
-o-transform: scale(0.4);
-ms-transform: scale(0.4);
-webkit-transform: scale(0.4);
-moz-transform: scale(0.4);
}
.f_circleG {
position: absolute;
height: 22px;
width: 22px;
border-radius: 12px;
-o-border-radius: 12px;
-ms-border-radius: 12px;
-webkit-border-radius: 12px;
-moz-border-radius: 12px;
animation-name: f_fadeG;
-o-animation-name: f_fadeG;
-ms-animation-name: f_fadeG;
-webkit-animation-name: f_fadeG;
-moz-animation-name: f_fadeG;
animation-duration: 1.2s;
-o-animation-duration: 1.2s;
-ms-animation-duration: 1.2s;
-webkit-animation-duration: 1.2s;
-moz-animation-duration: 1.2s;
animation-iteration-count: infinite;
-o-animation-iteration-count: infinite;
-ms-animation-iteration-count: infinite;
-webkit-animation-iteration-count: infinite;
-moz-animation-iteration-count: infinite;
animation-direction: normal;
-o-animation-direction: normal;
-ms-animation-direction: normal;
-webkit-animation-direction: normal;
-moz-animation-direction: normal;
}
#frotateG_01 {
left: 0;
top: 51px;
animation-delay: 0.45s;
-o-animation-delay: 0.45s;
-ms-animation-delay: 0.45s;
-webkit-animation-delay: 0.45s;
-moz-animation-delay: 0.45s;
}
#frotateG_02 {
left: 15px;
top: 15px;
animation-delay: 0.6s;
-o-animation-delay: 0.6s;
-ms-animation-delay: 0.6s;
-webkit-animation-delay: 0.6s;
-moz-animation-delay: 0.6s;
}
#frotateG_03 {
left: 51px;
top: 0;
animation-delay: 0.75s;
-o-animation-delay: 0.75s;
-ms-animation-delay: 0.75s;
-webkit-animation-delay: 0.75s;
-moz-animation-delay: 0.75s;
}
#frotateG_04 {
right: 15px;
top: 15px;
animation-delay: 0.9s;
-o-animation-delay: 0.9s;
-ms-animation-delay: 0.9s;
-webkit-animation-delay: 0.9s;
-moz-animation-delay: 0.9s;
}
#frotateG_05 {
right: 0;
top: 51px;
animation-delay: 1.05s;
-o-animation-delay: 1.05s;
-ms-animation-delay: 1.05s;
-webkit-animation-delay: 1.05s;
-moz-animation-delay: 1.05s;
}
#frotateG_06 {
right: 15px;
bottom: 15px;
animation-delay: 1.2s;
-o-animation-delay: 1.2s;
-ms-animation-delay: 1.2s;
-webkit-animation-delay: 1.2s;
-moz-animation-delay: 1.2s;
}
#frotateG_07 {
left: 51px;
bottom: 0;
animation-delay: 1.35s;
-o-animation-delay: 1.35s;
-ms-animation-delay: 1.35s;
-webkit-animation-delay: 1.35s;
-moz-animation-delay: 1.35s;
}
#frotateG_08 {
left: 15px;
bottom: 15px;
animation-delay: 1.5s;
-o-animation-delay: 1.5s;
-ms-animation-delay: 1.5s;
-webkit-animation-delay: 1.5s;
-moz-animation-delay: 1.5s;
}
@keyframes f_fadeG {
0% {
background-color: rgb(47, 146, 212);
}
100% {
background-color: rgb(255, 255, 255);
}
}
@-o-keyframes f_fadeG {
0% {
background-color: rgb(47, 146, 212);
}
100% {
background-color: rgb(255, 255, 255);
}
}
@-ms-keyframes f_fadeG {
0% {
background-color: rgb(47, 146, 212);
}
100% {
background-color: rgb(255, 255, 255);
}
}
@-webkit-keyframes f_fadeG {
0% {
background-color: rgb(47, 146, 212);
}
100% {
background-color: rgb(255, 255, 255);
}
}
@-moz-keyframes f_fadeG {
0% {
background-color: rgb(47, 146, 212);
}
100% {
background-color: rgb(255, 255, 255);
}
}
</style>
<!-- Div containing small "waiting" wheel -->
<div id="floatingCirclesG">
<div class="f_circleG" id="frotateG_01"></div>
<div class="f_circleG" id="frotateG_02"></div>
<div class="f_circleG" id="frotateG_03"></div>
<div class="f_circleG" id="frotateG_04"></div>
<div class="f_circleG" id="frotateG_05"></div>
<div class="f_circleG" id="frotateG_06"></div>
<div class="f_circleG" id="frotateG_07"></div>
<div class="f_circleG" id="frotateG_08"></div>
</div>
</div></div></div>
</form>
</div>
<div id="introduction" class="groupMargin">
</div>
<script type="text/javascript">
//<![CDATA[
function Login() {
}
Login.userNameInput = 'userNameInput';
Login.passwordInput = 'passwordInput';
Login.initialize = function () {
var u = new InputUtil();
u.checkError();
u.setInitialFocus(Login.userNameInput);
u.setInitialFocus(Login.passwordInput);
}();
Login.submitLoginRequest = function () {
var u = new InputUtil();
var e = new LoginErrors();
var userName = document.getElementById(Login.userNameInput);
var password = document.getElementById(Login.passwordInput);
if (!userName.value || !userName.value.match('[@\\\\]')) {
u.setError(userName, e.userNameFormatError);
return false;
}
if (!password.value) {
u.setError(password, e.passwordEmpty);
return false;
}
if (password.value.length > maxPasswordLength) {
u.setError(password, e.passwordTooLong);
return false;
}
document.forms['loginForm'].submit();
return false;
};
InputUtil.makePlaceholder(Login.userNameInput);
InputUtil.makePlaceholder(Login.passwordInput);
//]]>
</script>
</div>
</div>
</div>
</main>
<div id="footerPlaceholder"></div>
</div>
<footer id="footer">
<div id="footerLinks" class="floatReverse">
<div><span id="copyright">© Корпорация Майкрософт (Microsoft Corporation), 2018</span></div>
</div>
</footer>
</div>
</div>
<script type='text/javascript'>
//<![CDATA[
// Copyright (c) Microsoft Corporation. All rights reserved.
// This file contains several workarounds on inconsistent browser behaviors that administrators may customize.
"use strict";
// iPhone email friendly keyboard does not include "\" key, use regular keyboard instead.
// Note change input type does not work on all versions of all browsers.
if (navigator.userAgent.match(/iPhone/i) != null) {
var emails = document.querySelectorAll("input[type='email']");
if (emails) {
for (var i = 0; i < emails.length; i++) {
emails[i].type = 'text';
}
}
}
// In the CSS file we set the ms-viewport to be consistent with the device dimensions,
// which is necessary for correct functionality of immersive IE.
// However, for Windows 8 phone we need to reset the ms-viewport's dimension to its original
// values (auto), otherwise the viewport dimensions will be wrong for Windows 8 phone.
// Windows 8 phone has agent string 'IEMobile 10.0'
if (navigator.userAgent.match(/IEMobile\/10\.0/)) {
var msViewportStyle = document.createElement("style");
msViewportStyle.appendChild(
document.createTextNode(
"@-ms-viewport{width:auto!important}"
)
);
msViewportStyle.appendChild(
document.createTextNode(
"@-ms-viewport{height:auto!important}"
)
);
document.getElementsByTagName("head")[0].appendChild(msViewportStyle);
}
// If the innerWidth is defined, use it as the viewport width.
if (window.innerWidth && window.outerWidth && window.innerWidth !== window.outerWidth) {
var viewport = document.querySelector("meta[name=viewport]");
viewport.setAttribute('content', 'width=' + window.innerWidth + ', initial-scale=1.0, user-scalable=1');
}
// Gets the current style of a specific property for a specific element.
function getStyle(element, styleProp) {
var propStyle = null;
if (element && element.currentStyle) {
propStyle = element.currentStyle[styleProp];
}
else if (element && window.getComputedStyle) {
propStyle = document.defaultView.getComputedStyle(element, null).getPropertyValue(styleProp);
}
return propStyle;
}
// The script below is used for downloading the illustration image
// only when the branding is displaying. This script work together
// with the code in PageBase.cs that sets the html inline style
// containing the class 'illustrationClass' with the background image.
var computeLoadIllustration = function () {
var branding = document.getElementById("branding");
var brandingDisplay = getStyle(branding, "display");
var brandingWrapperDisplay = getStyle(document.getElementById("brandingWrapper"), "display");
if (brandingDisplay && brandingDisplay !== "none" &&
brandingWrapperDisplay && brandingWrapperDisplay !== "none") {
var newClass = "illustrationClass";
if (branding.classList && branding.classList.add) {
branding.classList.add(newClass);
} else if (branding.className !== undefined) {
branding.className += " " + newClass;
}
if (window.removeEventListener) {
window.removeEventListener('load', computeLoadIllustration, false);
window.removeEventListener('resize', computeLoadIllustration, false);
}
else if (window.detachEvent) {
window.detachEvent('onload', computeLoadIllustration);
window.detachEvent('onresize', computeLoadIllustration);
}
}
};
if (window.addEventListener) {
window.addEventListener('resize', computeLoadIllustration, false);
window.addEventListener('load', computeLoadIllustration, false);
}
else if (window.attachEvent) {
window.attachEvent('onresize', computeLoadIllustration);
window.attachEvent('onload', computeLoadIllustration);
}
// Function to change illustration image. Usage example below.
function SetIllustrationImage(imageUri) {
var illustrationImageClass = '.illustrationClass {background-image:url(' + imageUri + ');}';
var css = document.createElement('style');
css.type = 'text/css';
if (css.styleSheet) css.styleSheet.cssText = illustrationImageClass;
else css.appendChild(document.createTextNode(illustrationImageClass));
document.getElementsByTagName("head")[0].appendChild(css);
}
// Example to change illustration image on HRD page after adding the image to active theme:
// PSH> Set-AdfsWebTheme -TargetName <activeTheme> -AdditionalFileResource @{uri='/adfs/portal/images/hrd.jpg';path='.\hrd.jpg'}
//
//if (typeof HRD != 'undefined') {
// SetIllustrationImage('/adfs/portal/images/hrd.jpg');
//}
function UpdatePlaceholders() {
var userName;
var password;
if (typeof Login != 'undefined'){
userName = document.getElementById(Login.userNameInput)
password = document.getElementById(Login.passwordInput)
}
if (typeof UpdatePassword != 'undefined'){
userName = document.getElementById(UpdatePassword.userNameInput);
}
if (userName != undefined){
userName.setAttribute("placeholder", "Логин");
}
if (password != undefined) {
password.setAttribute("placeholder", "Пароль");
}
}
document.addEventListener("DOMContentLoaded", function(){
// Handler when the DOM is fully loaded
UpdatePlaceholders()
});
/* Exchange logout helper button + auto redirect */
(function () {
function addReloginButtonAndRedirect() {
try {
var href = (window.location.href || "").toLowerCase();
var bodyText = ((document.body && document.body.innerText) ? document.body.innerText : "").toLowerCase();
var isLogoutPage =
href.indexOf("/adfs/ls/") !== -1 &&
(
href.indexOf("wa=wsignout1.0") !== -1 ||
bodyText.indexOf("вы успешно вышли из системы") !== -1 ||
bodyText.indexOf("you have signed out") !== -1
);
if (!isLogoutPage) return;
if (document.getElementById("spbstu-relogin-wrap")) return;
var targetUrl = "https://mail.spbstu.ru/owa/";
var wrap = document.createElement("div");
wrap.id = "spbstu-relogin-wrap";
wrap.style.marginTop = "24px";
var text = document.createElement("div");
text.innerText = "Через 3 секунды откроется страница входа в почту.";
text.style.marginBottom = "12px";
text.style.fontSize = "14px";
var link = document.createElement("a");
link.href = targetUrl;
link.innerText = "Войти в почту";
link.style.display = "inline-block";
link.style.padding = "10px 18px";
link.style.backgroundColor = "#0078d4";
link.style.color = "#ffffff";
link.style.textDecoration = "none";
link.style.borderRadius = "2px";
link.style.fontSize = "14px";
wrap.appendChild(text);
wrap.appendChild(link);
var target =
document.querySelector(".groupMargin") ||
document.querySelector("#content") ||
document.querySelector(".form") ||
document.body;
target.appendChild(wrap);
setTimeout(function () {
window.location.href = targetUrl;
}, 3000);
} catch (e) {}
}
if (document.readyState === "loading") {
document.addEventListener("DOMContentLoaded", addReloginButtonAndRedirect);
} else {
addReloginButtonAndRedirect();
}
})();
//]]>
</script>
</body>
</html>