Найден корректный robots.txt
Файл управления сканированием сайта роботами
?
Robots.txt указывает поисковым роботам, какие страницы сканировать, а какие — нет. Ошибки в файле могут случайно закрыть важные разделы от индексации.
Robots.txt настроен корректно. Размер файла: 14887 байт. Загружен за: 1сек.
Проверяемая страница не запрещена в robots.txt.
Цепочка редиректов для файла robots.txt:
http://emacsconf.org/robots.txt
302 Found
https://emacsconf.org/robots.txt
200 OK
Показать содержимое robots.txt
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title> EmacsConf</title>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="stylesheet" href="style.css" type="text/css" />
<link rel="stylesheet" href="local.css" type="text/css" />
<link rel="alternate" type="application/rss+xml" title="EmacsConf (RSS feed)" href="index.rss" /><link rel="alternate" type="application/atom+xml" title="EmacsConf (Atom feed)" href="index.atom" />
<link rel="vcs-git" href="https://git.emacsconf.org/emacsconf-wiki" title="wiki git repository" />
<link rel="vcs-git" href="git://git.emacsconf.org/emacsconf-wiki" title="wiki git repository" />
<link rel="vcs-git" href="ssh://anon@git.emacsconf.org:emacsconf-wiki" title="wiki git repository" />
<script>
// @license magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt AGPL-3.0-or-later
/*
SeekToTime - simple script to add video time jump functionality to timestamp links
Copyright (C) 2020-2024 Grant Shangreaux and Sacha Chua
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
This script enables wiki editors to create anchor tags with the class "time-link"
that will be parsed for seeking to specific time stamps in the main video on a page.
The tag should look like this:
<a href="#mainVideo" class="time-link">mm:ss</a>
This could be extended to accept hours in the time stamp as well, but currently does not.
*/
let timestamps;
// expects a string like "mm:ss.mmm"
function parseSeconds(timeString) {
return timeString.split(":").reduce(function(prev, o) {
return prev * 60 + parseFloat(o);
}, 0);
}
function handleSubtitleClick(event) {
var video = event.target.getAttribute('data-video');
var start = event.target.getAttribute('data-start');
const stickyVideo = document.querySelector('.transcript #' + video);
const indexCardVideo = document.querySelector('.vid #' + video);
if (indexCardVideo) {
indexCardVideo.currentTime = parseSeconds(start);
}
if (stickyVideo && window.getComputedStyle(stickyVideo).display == 'block') {
stickyVideo.currentTime = parseSeconds(start);
} else {
indexCardVideo.scrollIntoView();
}
if (event.preventDefault) {
event.preventDefault();
}
}
window.onload = function initScript() {
let subtitles = document.getElementsByClassName('subtitle');
for (let i = 0; i < subtitles.length; i++) {
subtitles[i].onclick = handleSubtitleClick;
}
}
// @license-end
</script>
</head>
<body >
<div class="page">
<div class="pageheader-wrapper">
<div class="pageheader">
<div class="header">
<span>
<span class="parentlinks">
</span>
<span class="title">
EmacsConf
</span>
</span>
</div>
<div class="actions">
<ul>
<!-- <li><a href="donate/">❤️ Donate</a></li> -->
<li><a href="edit/">Edit <span class="muted">(how to)</span></a></li>
<li><a href="./recent-changes/">Recent Changes</a></li>
<li><a rel="nofollow" href="//git.emacsconf.org/emacsconf-wiki/log/index.md">History</a></li>
</ul>
</div>
</div>
</div>
<div id="pagebody">
<div id="content" role="main">
<p class="center"><a href="./i/emacsconf-logo1-256.png"><img src="./i/emacsconf-logo1-256.png" width="256" height="256" alt="EmacsConf logo" class="img" /></a></p>
<p class="center">EmacsConf is the conference about the joy of
<a href="https://www.gnu.org/software/emacs/">Emacs</a> and
Emacs Lisp.</p>
<h2>Current Conferences</h2>
<p><strong><a href="./2026/">EmacsConf 2026</a></strong> - Dec 12-13 (Sat-Sun)</p>
<h2>Past Conferences</h2>
<ul>
<li><a href="./2025/">EmacsConf 2025</a></li>
<li><a href="./2024/">EmacsConf 2024</a></li>
<li><a href="./2023/">EmacsConf 2023</a></li>
<li><a href="./2022/">EmacsConf 2022</a></li>
<li><a href="./2021/">EmacsConf 2021</a></li>
<li><a href="./2020/">EmacsConf 2020</a></li>
<li><a href="./2019/">EmacsConf 2019</a></li>
<li><a href="./2015/">EmacsConf 2015</a></li>
<li><a href="./2013/">EmacsConf 2013</a></li>
</ul>
<p>You can also browse <a href="https://media.emacsconf.org/">media.emacsconf.org</a> or <a href="https://eu.media.emacsconf.org/">eu.media.emacsconf.org</a> for videos and other talk-related materials.</p>
<h2>Updates</h2>
<div class="feedlink">
<a class="feedbutton" type="application/rss+xml" rel="alternate" title="EmacsConf (RSS feed)" href="index.rss">RSS</a>
<a class="feedbutton" type="application/atom+xml" rel="alternate" title="EmacsConf (Atom feed)" href="index.atom">Atom</a>
</div>
<div class="archivepage">
<a href="./2025/report/">EmacsConf 2025 Report</a><br />
<span class="archivepagedate">
Posted <span class="date">Friday 2 January 2026 at 21:47 (UTC)</span>
</span>
</div>
<div class="archivepage">
<a href="./2024/report/">EmacsConf 2024 Report</a><br />
<span class="archivepagedate">
Posted <span class="date">Saturday 28 December 2024 at 13:36 (UTC)</span>
</span>
</div>
<div class="archivepage">
<a href="./2023/report/">EmacsConf 2023 Report</a><br />
<span class="archivepagedate">
Posted <span class="date">Wednesday 3 January 2024 at 13:44 (UTC)</span>
</span>
</div>
<div class="archivepage">
<a href="./blog/2023-09-25-draft-schedule/">EmacsConf 2023 progress report: 44 talks accepted, schedule being drafted</a><br />
<span class="archivepagedate">
Posted <span class="date">Tuesday 26 September 2023 at 1:06 (UTC)</span>
</span>
</div>
<div class="archivepage">
<a href="./blog/2023-08-14-cfp-progress/">EmacsConf 2023 CFP progress report (8 talks accepted so far, 1 to review, 6 todo)</a><br />
<span class="archivepagedate">
Posted <span class="date">Tuesday 15 August 2023 at 0:50 (UTC)</span>
</span>
</div>
<div class="archivepage">
<a href="./blog/2022-11-07/">Captions, dry run, workflow improvements</a><br />
<span class="archivepagedate">
Posted <span class="date">Monday 7 November 2022 at 12:57 (UTC)</span>
</span>
</div>
<div class="archivepage">
<a href="./blog/2022-10-30/">Captions, tech checks, intros, OBS</a><br />
<span class="archivepagedate">
Posted <span class="date">Sunday 30 October 2022 at 23:44 (UTC)</span>
</span>
</div>
<div class="archivepage">
<a href="./blog/2022-10-16/">Speakers confirmed, Etherpad, watch pages, shifts</a><br />
<span class="archivepagedate">
Posted <span class="date">Wednesday 26 October 2022 at 16:18 (UTC)</span>
</span>
</div>
<div class="archivepage">
<a href="./blog/2022-10-23/">Backstage, captions, streaming, and more</a><br />
<span class="archivepagedate">
Posted <span class="date">Sunday 23 October 2022 at 18:07 (UTC)</span>
</span>
</div>
</div>
</div>
<div id="footer" class="pagefooter" role="contentinfo">
<div id="pageinfo">
<div class="pagelicense">
<a name="pagelicense"></a>
<p>Unless otherwise noted, the material on the EmacsConf wiki are
<a href="./COPYING/">dual-licensed under CC BY-SA 4.0 and GPLv3+</a>.</p>
</div>
<div class="pagedate">
Last edited <span class="date">Sunday 28 June 2026 at 1:06 (UTC)</span>
<!-- Created <span class="date">Tuesday 26 February 2019 at 23:01 (UTC)</span> -->
</div>
</div>
<!-- from EmacsConf -->
</div>
</div>
<script>
// @license magnet:?xt=urn:btih:90dc5c0be029de84e523b9b3922520e79e0e6f08&dn=cc0.txt txt CC0-1.0
// Copyright (C) 2021, 2022 Sacha Chua
if (document.querySelector('.times')) {
var dateOptions = {dateStyle: 'short', timeStyle: 'short'};
var localStart = (new Date(document.querySelector('.times').getAttribute('start'))).toLocaleString([], dateOptions);
var localEnd = (new Date(document.querySelector('.times').getAttribute('end'))).toLocaleString([], dateOptions);
var dateElem = document.createElement('div');
dateElem.appendChild(document.createTextNode('Your local time: ~ ' + localStart + ' to ~ ' + localEnd));
document.querySelector('.times').prepend(dateElem);
if (document.querySelector('.times').querySelector('.others')) {
document.querySelector('.times').querySelector('.others').style.display = 'none';
}
}
if (document.querySelector('.time-overlay')) {
document.querySelectorAll('.time-overlay').forEach(function (o) {
if (o.getAttribute('title')) return;
var dateOptions = {dateStyle: 'short', timeStyle: 'short'};
var localStart, localEnd;
if (o.getAttribute('start') && o.getAttribute('end')) {
localStart = (new Date(o.getAttribute('start'))).toLocaleString([], dateOptions);
localEnd = (new Date(o.getAttribute('end'))).toLocaleString([], dateOptions);
o.setAttribute('title', 'Your local time: ~ ' + localStart + ' to ~ ' + localEnd);
} else if (o.getAttribute('start')) {
localStart = (new Date(o.getAttribute('start'))).toLocaleString([], dateOptions);
o.setAttribute('title', 'Your local time: ~ ' + localStart);
}
});
}
if (document.querySelector('a[name=transcript]')) {
var transcriptLink = document.createElement('a');
transcriptLink.setAttribute('href', '#transcript');
transcriptLink.textContent = 'View transcript';
var video = document.querySelector('.mainVideo video');
if (video) {
var resources = document.querySelector('.mainVideo video').closest('.vid').querySelector('.resources');
var transcriptDiv = document.createElement('div');
transcriptDiv.appendChild(transcriptLink)
if (resources) { resources.prepend(transcriptDiv); }
}
}
var chat = document.querySelector('.chat-iframe');
if (chat) {
if (chat.getAttribute('data-track')) {
chat.innerHTML = '<iframe src="https://chat.emacsconf.org?join=emacsconf,emacsconf-' +
chat.getAttribute('data-track').replace(/[^A-Za-z]/g, '') + '" height="600" width="100%"></iframe>';
} else {
chat.innerHTML = '<iframe src="https://chat.emacsconf.org" height="600" width="100%"></iframe>';
}
}
// @license-end
</script>
<script>
// @license magnet:?xt=urn:btih:90dc5c0be029de84e523b9b3922520e79e0e6f08&dn=cc0.txt txt CC0-1.0
// Copyright (c) 2021 Sacha Chua - CC0 Public Domain
function displayChapters(elem) {
var i;
var chapter;
var list = document.createElement('ol');
list.setAttribute('class', 'chapters');
var link;
var target = elem.getAttribute('data-target');
var video = document.getElementById(target);
var track;
if (video) {
track = video.addTextTrack('chapters');
track.mode = 'hidden';
}
var chapters = elem.textContent.split(/[ \t]*\n+[ \t]*/).forEach(function(line) {
var m = (line.match(/^(((?:[0-9]+:)?[0-9]+:[0-9]+)(?:\.[0-9]+))[ \t]+(.*)/));
if (m) {
var start = m[1];
var text = m[3];
chapter = document.createElement('li');
link = document.createElement('a');
link.setAttribute('href', '#');
link.setAttribute('data-video', target);
link.setAttribute('data-start', start);
link.setAttribute('data-start-s', parseSeconds(start));
link.appendChild(document.createTextNode(m[2] + ' ' + text));
link.onclick = handleSubtitleClick;
chapter.appendChild(link);
list.appendChild(chapter);
if (track) {
var time = parseSeconds(start);
if (track.cues.length > 0) {
track.cues[track.cues.length - 1].endTime = time - 1;
}
track.addCue(new VTTCue(time, time, text));
}
}
})
if (track && track.cues.length > 0) {
video.addEventListener('durationchange', function() {
track.cues[track.cues.length - 1].endTime = video.duration;
});
track.addEventListener('cuechange', function() {
if (!this.activeCues[0]) return;
if (list.querySelector('.current')) {
list.querySelector('.current').className = '';
}
var chapter;
if (chapter = list.querySelector('a[data-start-s="' + this.activeCues[0].startTime + '"]')) {
chapter.parentNode.className = 'current';
}
});
}
elem.parentNode.replaceChild(list, elem);
}
document.querySelectorAll('pre.chapters').forEach(displayChapters);
var video = document.querySelector('video.reload');
if (video) {
var myVar = setInterval(reloadAsNeeded, 1000);
var oldTime = '';
function reloadAsNeeded() {
if ((video.paused != true && (video.currentTime - oldTime) == 0 && video.currentTime != 0)) {
var source = video.querySelector('source');
var oldVideo = source.src;
source.src = '';
source.src = oldVideo;
video.load();
video.play();
}
oldTime = video.currentTime;
};
}
/* videoType: mainVideo, qanda */
function addStickyVideo(videoType) {
const transcriptDiv = document.querySelector('.transcript-' + videoType);
const video = document.querySelector('.vid.' + videoType + ' video');
if (!video || !transcriptDiv) return;
if (transcriptDiv.querySelector('.vid'))
transcriptDiv.querySelector('.vid').remove();
// already has it
// TODO: Make a copy of the video and place it at the start of the transcript div, positioned to the left, and sticky, but only on large screens.
const videoCopy = video.cloneNode(true);
transcriptDiv.prepend(videoCopy);
videoCopy.classList.add('sticky-video');
// TODO: fix the ID
}
// @license-end
// @license magnet:?xt=urn:btih:90dc5c0be029de84e523b9b3922520e79e0e6f08&dn=cc0.txt txt CC0-1.0
// Copyright (c) 2023 Sacha Chua - CC0 Public Domain
function highlightTalks() {
// highlight any talk mentioned in the highlight URL parameter
var params = new URLSearchParams(window.location.search);
if (!params.get('highlight')) return;
var talks = params.get('highlight').split(',').filter(function(o) { return o.match(/^[-a-z0-9]+$/); });
var regexp = new RegExp('/talks/(' + talks.join('|') + ')/?$');
document.querySelectorAll('a[href]').forEach(function(link) {
console.debug(link.getAttribute('href'), link.getAttribute('href').match(regexp));
if (link.getAttribute('href').match(regexp)) {
console.debug(link);
link.classList.add('highlight');
}
});
}
addEventListener('DOMContentLoaded', highlightTalks);
addEventListener('DOMContentLoaded', function() {
addStickyVideo('mainVideo');
addStickyVideo('qanda');
});
// @license-end
</script>
</body>
</html>