Я для своего основного продукта поддерживаю руководство пользователя в виде XML-оглавления и набора HTML-страниц, все это собирается в CHM при помощи HTML Help. Еще зимой выложил это дело на сайт продукта. Сайт статический, и хотелось обойтись минимумом работы по адаптации и сопровождению — фактически, переделать пришлось только оглавление, а HTML-страницы в каталоге лежат те же, править/заменять очень удобно. Окно справа — фрейм, в который грузится выбранная страница руководства.
Проблема такой структуры в том, что без костылей любая внешняя ссылка на страницу руководства отображала бы только страницу, без оглавления. Поэтому пришлось приделать костыли — если запрос приходит не с основной страницы (manual.htm), то .htaccess переделывает его в вид manual.htm?page=xxx.htm, а JS-код на основной странице выбирает оттуда ссылку и загружает во фрейм.
Чтобы эта кухня нормально переводилась в Google Translate, пришлось добавить исключение и для него, иначе при трансляции во фрейм загружается еще и заголовок/подвал сайта.
В обычном браузере все это работает нормально, но выяснилось, что гугл не желает индексировать страницы руководства. Я ему в sitemap подсунул "корневые" ссылки вида "/en/manual.htm?page=xxx.htm", но он их все упорно исключает, как приводящие к перенаправлению, и по той же причине исключает прямые ссылки на файлы страниц в /manual.
Как эту проблему проще разрулить? Можно ли втолковать гуглу через sitemap, что хотя бы одну ссылку из двух типов нужно оставить? Сейчас у меня в .htaccess временное перенаправление (302), вроде бы 301 гугл любит больше, но я периодически меняю структуру, и не хочется, чтобы при очередной переделке все поломалось.
Или в статике ничего не выйдет, и нужно делать (хотя бы на PHP) динамическое объединение страницы с оглавлением?
Лучше всего убрать все эти фреймы и сделать всё обычными статическими страницами. Не обязательно на PHP, можешь просто препроцессинг сделать на любом языке.
Здравствуйте, vsb, Вы писали:
vsb>Лучше всего убрать все эти фреймы и сделать всё обычными статическими страницами. Не обязательно на PHP, можешь просто препроцессинг сделать на любом языке.
Мне хотелось бы минимизировать количество сущностей, чтобы достаточно было закинуть исправленную страницу на сайт, и в редких случаях подправить переделанное оглавление. Не получится?
А на более серьезных сайтах это как делается? Форматированный текст кладется в базу, читается оттуда движком сайта, и на ходу генерится и оглавление, и текст?
Re[3]: Сайт: руководство с оглавлением и его индексация в гугле
Здравствуйте, Евгений Музыченко, Вы писали:
vsb>>Лучше всего убрать все эти фреймы и сделать всё обычными статическими страницами. Не обязательно на PHP, можешь просто препроцессинг сделать на любом языке.
ЕМ>Мне хотелось бы минимизировать количество сущностей, чтобы достаточно было закинуть исправленную страницу на сайт, и в редких случаях подправить переделанное оглавление. Не получится?
Ну chm ты же перегенериваешь. Так и тут. Сайт перегенерил одной командой, запустил скрипт, он залил страницы на сайт.
ЕМ>А на более серьезных сайтах это как делается? Форматированный текст кладется в базу, читается оттуда движком сайта, и на ходу генерится и оглавление, и текст?
Ну сгенерировать заранее HTML это идеальный вариант с точки зрения производительности. А так да, с точки зрения гибкости, наверное, лучше всего как ты написал.
Re[4]: Сайт: руководство с оглавлением и его индексация в гугле
Здравствуйте, vsb, Вы писали:
vsb>Ну chm ты же перегенериваешь.
CHM, по сути, компилируется — из разрозненного набора текстов преобразуется в компактный и универсальный формат. WinHelp в этом смысле был еще правильнее, ибо генерился просто из форматированного текста.
vsb>Ну сгенерировать заранее HTML это идеальный вариант с точки зрения производительности.
Это когда избыточных страниц десяток. А если их тысячи?
Re[5]: Сайт: руководство с оглавлением и его индексация в гугле
Здравствуйте, Евгений Музыченко, Вы писали:
vsb>>Ну chm ты же перегенериваешь.
ЕМ>CHM, по сути, компилируется — из разрозненного набора текстов преобразуется в компактный и универсальный формат. WinHelp в этом смысле был еще правильнее, ибо генерился просто из форматированного текста.
vsb>>Ну сгенерировать заранее HTML это идеальный вариант с точки зрения производительности.
ЕМ>Это когда избыточных страниц десяток. А если их тысячи?
Ну обычно это же всё редактируется не так часто. А компьютер, он железный, что ему эти тысячи. Несколько секунд от силы.
Re[6]: Сайт: руководство с оглавлением и его индексация в гугле
Здравствуйте, vsb, Вы писали:
vsb>А компьютер, он железный, что ему эти тысячи. Несколько секунд от силы.
Я не о времени обработки, а о степени избыточности кода/данных. Вроде бы идею о том, что нужно стремиться избегать избыточности и повторения, пока не отменили, но мысль хранить множество одинаковых копий возникает легко и непринужденно. А где тогда граница между тем, где избыточность вредна, и тем, где она приемлема?
Re[7]: Сайт: руководство с оглавлением и его индексация в гугле
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Здравствуйте, vsb, Вы писали:
vsb>>А компьютер, он железный, что ему эти тысячи. Несколько секунд от силы.
ЕМ>Я не о времени обработки, а о степени избыточности кода/данных. Вроде бы идею о том, что нужно стремиться избегать избыточности и повторения, пока не отменили, но мысль хранить множество одинаковых копий возникает легко и непринужденно. А где тогда граница между тем, где избыточность вредна, и тем, где она приемлема?
Избыточности нет, т.к. источник данных один — набор XML-файлов. Правишь в одном месте. Всё остальное это результат обработки эти данных и избыточного там только место на диске. А текст занимает смехотворно мало по сегодняшним меркам.
Re: Сайт: руководство с оглавлением и его индексация в гугле
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Или в статике ничего не выйдет, и нужно делать (хотя бы на PHP) динамическое объединение страницы с оглавлением?
Я бы заморочился и таки сделал нормально (убрать фреймы нафик).
Пусть не завтра, но за месяц же вполне реально.
Можно хоть парсер готового сайта сделать, чтобы он делал другой сайт, но уже без фреймов.
Посмотри например https://readthedocs.org — оно вполне себе ничего IMHO (доки)
Даже мелкомягкие его используют, для неосновных продуктов и API.
Re[8]: Сайт: руководство с оглавлением и его индексация в гугле
Здравствуйте, vsb, Вы писали:
vsb>избыточного там только место на диске. А текст занимает смехотворно мало по сегодняшним меркам.
В отношении конкретно моего сайта оно действительно так. Но мне показалось, что Вы предлагаете так поступать с любыми текстам на любом сайте, независимо от количества и объема, а это уже как-то неправильно. Ну и время загрузки, если сервер не локальный, а страниц много, будет расти соответственно, а при изменении пары символов в шапке сайта придется перезаливать весь сайт.
Re[2]: Сайт: руководство с оглавлением и его индексация в гугле
Здравствуйте, bnk, Вы писали:
bnk>Я бы заморочился и таки сделал нормально (убрать фреймы нафик). bnk>Пусть не завтра, но за месяц же вполне реально.
Так мне есть, чем заниматься этот месяц. Поэтому и хотелось бы без тяжеловесных решений и примочек. Сейчас оно сделано совсем примитивно, наверняка есть способы сделать чуть менее примитивно, но более правильно.
bnk>Можно хоть парсер готового сайта сделать, чтобы он делал другой сайт, но уже без фреймов.
Но это ж извращение. Тем более, что на сайте всего несколько десятков страниц с общей шапкой и подвалом, а в руководстве добавляется еще общее оглавление.
bnk>Посмотри например https://readthedocs.org — оно вполне себе ничего IMHO
Оно для этой задачи слишком наворочено.
bnk>Даже мелкомягкие его используют, для неосновных продуктов и API.
"Даже мелкомягкие" — это пять. Уж кто у себя на сайте десятилетиями не может навести порядок в документации...
Re[2]: Сайт: руководство с оглавлением и его индексация в гугле
Здравствуйте, vsb, Вы писали:
vsb>Лучше всего убрать все эти фреймы и сделать всё обычными статическими страницами.
Кстати, я что-то не могу сообразить, как можно обойтись без фреймов, и при этом увязать страницы руководства с оглавлением. В каждой странице свое пространство имен внутренних ссылок (anchor'ов, которые задаются после "#"). Они, конечно, в основном отличаются, но есть и совпадающие. Делать все эти ссылки уникальными?
Re[3]: Сайт: руководство с оглавлением и его индексация в гугле
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Здравствуйте, vsb, Вы писали:
vsb>>Лучше всего убрать все эти фреймы и сделать всё обычными статическими страницами.
ЕМ>Кстати, я что-то не могу сообразить, как можно обойтись без фреймов, и при этом увязать страницы руководства с оглавлением. В каждой странице свое пространство имен внутренних ссылок (anchor'ов, которые задаются после "#"). Они, конечно, в основном отличаются, но есть и совпадающие. Делать все эти ссылки уникальными?
Непонятно, в чём проблема. <a href="chapter1.html#part-1">Глава 1, часть 1</a>; <a href="chapter2.html#part-1">Глава 2, часть 1</a>.
Re[4]: Сайт: руководство с оглавлением и его индексация в гугле
Здравствуйте, vsb, Вы писали:
vsb>Непонятно, в чём проблема. <a href="chapter1.html#part-1">Глава 1, часть 1</a>; <a href="chapter2.html#part-1">Глава 2, часть 1</a>.
У Вас разделы и метки в руководстве именно так поименованы? Плюс отдельно ведется табличка соответствия циферок названиям?
Re[5]: Сайт: руководство с оглавлением и его индексация в гугле
Здравствуйте, Евгений Музыченко, Вы писали:
vsb>>Непонятно, в чём проблема. <a href="chapter1.html#part-1">Глава 1, часть 1</a>; <a href="chapter2.html#part-1">Глава 2, часть 1</a>.
ЕМ>У Вас разделы и метки в руководстве именно так поименованы? Плюс отдельно ведется табличка соответствия циферок названиям?
Да как угодно именуйте, я привёл пример двух ссылок на разные страницы с одинаковым ID. Или я не понял, в чём проблема.
Re[6]: Сайт: руководство с оглавлением и его индексация в гугле
Здравствуйте, vsb, Вы писали:
vsb>Да как угодно именуйте, я привёл пример двух ссылок на разные страницы с одинаковым ID. Или я не понял, в чём проблема.
Да, это я протупил — потом сообразил, что каждая страница остается в своем файле, только нужно ее оборачивать и общим для сайта заголовком/подвалом, и вдобавок добавлять влево оглавление.
Сделал статический вариант — как и ожидалось, вышло корявенько. history.back () не работает, а общий Back окна не работает между anchor'ами одной страницы. Поскольку каждый раз перегружается вся страница, то позиция в оглавлении сбивается на начало. Ну и все файлы утыканы директивами SSI. Напоминает очень корявую программу на C++ с активным использованием макросов.
Кстати, каким-нибудь WYSIWYG-редакторам HTML можно подсказать, что в HTML-файл внешними средствами добавляются определенные стили, мета-теги и т.п.?
Re[7]: Сайт: руководство с оглавлением и его индексация в гу
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Сделал статический вариант — как и ожидалось, вышло корявенько. history.back () не работает, а общий Back окна не работает между anchor'ами одной страницы. Поскольку каждый раз перегружается вся страница, то позиция в оглавлении сбивается на начало. Ну и все файлы утыканы директивами SSI. Напоминает очень корявую программу на C++ с активным использованием макросов.
Почему перезагружается страница? Возможно заголовки кеширования отдаются плохие. Если заголовки нормальные, браузер прекрасно кеширует всё и ничего не будет перезагружаться после первой загрузки (тут главное в другую крайность не уйти, чтобы вообще в будущем всё в кеше не осталось у клиентов).
Здравствуйте, vsb, Вы писали:
vsb>Возможно заголовки кеширования отдаются плохие.
Что поставил, то и отдается: "Cache-control: max-age=300, public".
Вообще, нигде и никогда не видел, чтобы браузер при переходе между файлами страниц не лазил на сервер. А в пределах одного файла, само собой, страница не перегружается.
Re[9]: Сайт: руководство с оглавлением и его индексация в гу
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Что поставил, то и отдается: "Cache-control: max-age=300, public".
Странно. А точно отдаётся?
ЕМ>Вообще, нигде и никогда не видел, чтобы браузер при переходе между файлами страниц не лазил на сервер. А в пределах одного файла, само собой, страница не перегружается.
Ну вот сейчас проверил: https://vbezhenar.com/test/test1.html работает без сетевых запросов после первой загрузки. Даже сеть можно выключить. Ну в хроме по крайней мере, хотя в других тоже должно работать.
Если что, по F5 браузер всегда перезагружает страницу. Надо именно по ссылкам щёлкать.
Здравствуйте, vsb, Вы писали:
vsb>А точно отдаётся?
Для моих страниц — точно. Но там еще элемент Google Translate, он отдает "no cache". Возможно, из-за этого браузер перегружает.
vsb>Ну вот сейчас проверил: https://vbezhenar.com/test/test1.html работает без сетевых запросов после первой загрузки. Даже сеть можно выключить. Ну в хроме по крайней мере, хотя в других тоже должно работать.
В FF тоже работает. Но повторю: в сети никогда и нигде такого не видел. Подозреваю, что к моменту введения Cache-control все уже прочно подсели на динамический контент.
vsb>Если что, по F5 браузер всегда перезагружает страницу. Надо именно по ссылкам щёлкать.