Я ищу лучшее решение, чтобы убедиться, что я делаю это правильно:
У меня есть календарь на моем веб-сайте, в котором пользователи могут взять фид календаря iCal и импортировать его во внешние календари по своему усмотрению (Outlook, iCal, Календарь Google и т. Д.).
Чтобы предотвратить сканирование / поиск файлов * .ics на моем веб-сайте плохими людьми, я установил Robots.txt, чтобы запретить использование папок, в которых хранятся каналы.
Итак, по сути, канал iCal может выглядеть так: webcal: //www.mysite.com/feeds/cal/a9d90309dafda390d09/feed.ics
Я понимаю, что приведенный выше URL-адрес все еще является общедоступным. Однако у меня есть функция, в которой пользователь может при желании изменить адрес своей ленты.
Мой вопрос: у всех внешних календарей нет проблем с импортом / подпиской на канал календаря, за исключением Календаря Google. Выдает сообщение: Google не удалось просканировать URL из-за ограничения robots.txt. Ответ Google на это.
Следовательно, после поисков я обнаружил, что работает следующее:
1) Настройте файл PHP (который я использую), который, по сути, вызывает загрузку файла. В основном это выглядит так:
<?php
$url = "/home/path/to/local/feed/".$_GET['url'];
$file = fopen ($url, "r");
if (!$file) {
echo "<p>Unable to open remote file.\n";
exit;
}
while (!feof ($file)) {
$line = fgets ($file, 1024);
print $line;
}
fclose($file);
?>
Я пробовал использовать этот скрипт, и оказалось, что он работает с Google Calendar без проблем. (Хотя я не уверен, что он обновляется / обновляется. Я все еще жду, чтобы увидеть, работает ли это).
У меня такой вопрос: есть ли лучший способ решить эту проблему? Я хотел бы сохранить текущий файл Robots.txt, чтобы запретить сканирование моих каталогов для файлов * .ics и сохранить эти файлы скрытыми.