Add SEO basics: separate EN/RU pages, sitemap, OG banner
Splits the landing page into / and /ru/ so each language can rank on its own, with hreflang links between them; boot.js/main.js now do a real navigation between the two instead of toggling text in place. Adds robots.txt and sitemap.xml, JSON-LD SoftwareApplication markup, Twitter Card tags, and a proper 1200x630 og-image.png in place of the SVG favicon for social previews. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
+22
-16
@@ -385,16 +385,19 @@ dotnet build Packaging\Installer\CursorLang.wixproj -p:SuppressValidation=false
|
||||
Partner Center не требует политику от приложения, которое не собирает данных, но
|
||||
страница, сказавшая это вслух, снимает вопрос у проверяющего.
|
||||
|
||||
Всё это — пять файлов в `site`, и ничего больше ниоткуда не подгружается: ни
|
||||
фреймворка, ни сборки, ни шрифта из сети.
|
||||
Ничего больше ниоткуда не подгружается: ни фреймворка, ни сборки, ни шрифта из
|
||||
сети.
|
||||
|
||||
| Файл | Что внутри |
|
||||
|---|---|
|
||||
| `index.html` | Разметка, оба языка сразу |
|
||||
| `index.html` | Английская страница — разметка, оба языка сразу |
|
||||
| `ru/index.html` | Та же разметка, впереди по умолчанию — русский |
|
||||
| `styles.css` | Все правила, включая палитру |
|
||||
| `boot.js` | Язык и тема прошлого визита — до первого кадра |
|
||||
| `main.js` | Остальное: переключатели, меню, демонстрация, предпросмотр |
|
||||
| `favicon.svg` | Та же тёмная плашка с «Aя», что и у иконки приложения |
|
||||
| `robots.txt` | Указывает краулерам на sitemap, ничего не запрещает |
|
||||
| `sitemap.xml` | Обе страницы, связанные между собой через `hreflang` |
|
||||
|
||||
`boot.js` вынесен отдельно и мал по одной причине: он должен отработать до
|
||||
разбора `body`. Он читает выбранное в прошлый раз и ставит это на элемент
|
||||
@@ -402,21 +405,24 @@ Partner Center не требует политику от приложения,
|
||||
на глазах исправлялся бы. `main.js` работает по разметке, которая к тому времени
|
||||
должна существовать, поэтому он отложенный.
|
||||
|
||||
Оба языка живут в разметке одновременно, а переключатель в углу выбирает один.
|
||||
Каждый переведённый кусок — это `<span lang="en">` рядом с `<span lang="ru">`, и
|
||||
тот, который не совпадает с языком на элементе `<html>`, скрывается правилом в
|
||||
две строки. С выключенными скриптами страница всё равно читается — по-английски.
|
||||
Оба языка живут в разметке каждой из страниц одновременно, а переключатель в
|
||||
углу выбирает один. Каждый переведённый кусок — это `<span lang="en">` рядом с
|
||||
`<span lang="ru">`, и тот, который не совпадает с языком на элементе `<html>`,
|
||||
скрывается правилом в две строки. С выключенными скриптами любая из страниц
|
||||
всё равно читается — на том языке, что у неё по умолчанию.
|
||||
|
||||
Выкладка сводится к копированию этих пяти файлов как есть. До неё адреса ждут
|
||||
две вещи.
|
||||
Английский и русский — это две страницы, а не одна с переключателем на клиенте,
|
||||
чтобы каждая могла ранжироваться в поиске сама по себе: `/` и `/ru/`, со
|
||||
ссылками `hreflang` друг на друга и в разметке, и в `sitemap.xml`, и у каждой —
|
||||
свой заголовок, описание и canonical. Клик по EN или RU — это настоящий переход
|
||||
между ними, а не перерисовка на месте, а `boot.js` отправляет посетителя,
|
||||
зашедшего впервые, на страницу под язык его браузера — но никогда не уводит с
|
||||
той из двух, на которую уже привела ссылка: иначе раздельное ранжирование
|
||||
пропадало бы для всех, кто пришёл именно так, включая краулеров.
|
||||
|
||||
Первая — страница в Store: обе кнопки загрузки сейчас не ссылки, а
|
||||
`<span class="btn disabled" role="link">`, потому что заглушка в `href` была бы
|
||||
относительным адресом и всякий, кто по ней пойдёт, получил бы 404. С адресом
|
||||
каждая возвращается в `<a class="btn" href="…">`, а примечание рядом уходит.
|
||||
|
||||
Вторая — адрес самого сайта: его ждут три тега, которых в шапке документа пока
|
||||
нет, — `og:image`, `og:url` и canonical.
|
||||
Выкладка сводится к копированию файлов как есть — на общие файлы (`/styles.css`
|
||||
и другие) ссылаются по абсолютному пути, так что `ru/index.html` обращается к
|
||||
той же копии, не заводя свою.
|
||||
|
||||
Поддержка — `support@alrakis.kz`: адрес стоит в разделе о данных, под кнопками
|
||||
загрузки и в подвале.
|
||||
|
||||
Reference in New Issue
Block a user