Оптимизација На Пребарувачот (Seo)
Принцип
i18n.site
усвојува архитектура на една страница без освежување Со цел да се олесни индексирањето на пребарувањето, ќе се генерираат посебна статична страница и sitemap.xml
за индексирање на роботите.
Кога User-Agent
од барањето за пристап се користи од пребарувачот на пребарувачот, барањето ќе биде пренасочено на статичната страница преку 302
.
На статичните страници, користете link
за да означите врски до различни јазични верзии на оваа страница, како на :
<link rel=alternate hreflang=zh href="https://i18n.site/zh/.htm">
<link rel=alternate hreflang=en href="https://i18n.site/en/.htm">
Локална nginx Конфигурација
Земете ја конфигурациската датотека .i18n/htm/main.yml
во демо-проектот како пример
host: i18n-demo.github.io
seo: true
out:
- fs
pkg:
i: i18n.site
md: i18n.site
cdn:
v:
jsd:
Ве молиме прво изменете ја вредноста од host:
погоре во името на вашиот домен, како на пример xxx.com
.
Потоа, i18n.site -n
, статичната страница ќе се генерира во директориумот out/main/htm
.
Се разбира, можете да овозможите и други конфигурациски датотеки, како на пример прво да се повикате на конфигурацијата на main
за да креирате .i18n/htm/dist.package.json
и .i18n/htm/dist.yml
.
Потоа извршете i18n.site -n -c dist
, така што статичната страница ќе се генерира на out/dist/htm
.
nginx
може да се постави со повикување на конфигурацијата подолу.
map $http_user_agent $botLang {
"~*baidu|yisou|sogou|360|byte" "/zh";
"~*facebookexternalhit|slurp|bot|spider|curl" "/en";
default "";
}
server {
http2 on;
listen 443 quic ;
listen 443 ssl ;
listen [::]:443 quic ;
listen [::]:443 ssl ;
add_header Alt-Svc 'h3=":443";ma=99999;persist=1';
server_name doc.flashduty.com;
ssl_certificate /root/.acme.sh/doc.flashduty.com_ecc/fullchain.cer;
ssl_certificate_key /root/.acme.sh/doc.flashduty.com_ecc/doc.flashduty.com.key;
root /mnt/doc.flashduty.com;
# Не ги кеширате скриптите на работникот на серверот предолго
location = /S.js {
add_header Cache-Control "max-age=600";
}
# Поставете подолго време за кеширање за други статични ресурси
location ~* \.(js|css|htm|html|md|avif|json|ico|xml|rss|gz|mp4|png|svg|txt|webmanifest)$ {
add_header Cache-Control "max-age=999999";
}
# Поставете која статичка датотека ја користи роботот како запис на почетната страница
location = / {
# Ако $botLang
if ($botLang) {
return 301 $botLang/flashduty.htm;
}
add_header Cache-Control "max-age=600";
rewrite ^ /index.html break;
}
# Конфигурација на апликација за една страница
location / {
if ($botLang) {
return 302 $botLang$request_uri.htm;
}
add_header Cache-Control "max-age=600";
rewrite ^ /index.html break;
}
}
server {
server_name doc.flashduty.com;
listen 80;
listen [::]:80 ;
location / {
rewrite ^(.+) https://$host$1 permanent;
}
location /.well-known/acme-challenge/ {
root /mnt/doc.flashduty.com/;
}
}
Конфигурирајте Складирање На Објекти За Поставување Статични Датотеки
Статичните датотеки може да се генерираат локално, но почест пристап е да се прикачат во складирање на објекти.
Изменете out
конфигурираната погоре во :
out:
- s3
Потоа, уредете ~/.config/i18n.site.yml
и додајте ја следната конфигурација :
site:
i18n.site:
s3:
- endpoint: s3.eu-central-003.backblazeb2.com
ak: # access key
sk: # secret key
bucket: # bucket name
# region:
Во конфигурацијата, ве молиме сменете го i18n.site
на вредноста host:
во .i18n/htm/main.yml
, повеќе складишта на објекти може да се конфигурираат под s3
, а полето region
е изборно (многу складишта на објекти не треба да го поставуваат ова поле).
Потоа извршете i18n.site -n
за повторно да го објавите проектот.
Ако сте го измениле ~/.config/i18n.site.yml
и сакате повторно да испратите, ве молиме користете ја следнава команда во root директориумот на проектот за да го исчистите кешот за прикачување :
rm -rf .i18n/data/seo .i18n/data/public
cloudflare Конфигурација
Доменот е хостиран на cloudflare
Правила За Конверзија
Додадете ги правилата за конверзија како што е прикажано подолу:
Кодот на правилото е како што следува, модифицирајте го кодот „i18n.site“ во името на вашиот домен:
(http.host in {"i18n.site"}) and not (
substring(http.request.uri.path,-3) in {".js" ".gz"} or
substring(http.request.uri.path,-4) in {".htm" ".rss" ".css" ".svg" ".ico" ".png" ".xml" ".txt"} or
substring(http.request.uri.path,-5) in {".html" ".avif" ".json"} or
ends_with(http.request.uri.path,".webmanifest")
)
Правила За Кеширање
Додадете правила за кеш на следниов начин:
(substring(http.request.uri.path,-4) in {".htm" ".rss"}) or ends_with(http.request.uri.path,"/sitemap.xml") or ends_with(http.request.uri.path,".xml.gz")
Правила За Пренасочување
Поставете ги правилата за пренасочување на следниов начин, модифицирајте го кодот „i18n.site“ на вашето име на домен
(http.host in {"i18n.site"}) and not (
substring(http.request.uri.path,-3) in {".js" ".gz"} or
substring(http.request.uri.path,-4) in {".htm" ".rss" ".css" ".svg" ".ico" ".png" ".xml" ".txt"} or
substring(http.request.uri.path,-5) in {".html" ".avif" ".json"} or
ends_with(http.request.uri.path,".webmanifest")
) and (
http.user_agent wildcard "*bot*" or
http.user_agent wildcard "*spider*" or
http.user_agent wildcard "*facebookexternalhit*" or
http.user_agent wildcard "*slurp*" or
http.user_agent wildcard "curl*" or
http.user_agent wildcard "*InspectionTool*"
)
URL redirect
Изберете динамично пренасочување, изменете го /en
во патеката за пренасочување concat("/en",http.request.uri.path,".htm")
до стандардниот јазик што сакате да го вклучат пребарувачите.
Интелигентна Конфигурација На Облак На Baidu
Ако треба да обезбедите услуги за континентална Кина, можете да го користите Baidu Smart Cloud .
Податоците се прикачуваат на Baidu Object Storage и се врзуваат за Baidu Content Distribution Network.
Потоа креирајте ја скриптата во EdgeJS раб на следниов начин
const uri = r.uri, p = uri.lastIndexOf(".");
if (
p < 0 ||
!"|js|css|htm|html|md|avif|json|ico|xml|rss|gz|mp4|png|svg|txt|webmanifest|".includes(
"|" + uri.slice(p + 1) + "|",
)
) {
const ua = r.headersIn["User-Agent"].toLowerCase()
if (/facebookexternalhit|slurp|bot|spider|curl/.test(ua)) {
r.return(
302,
(/baidu|yisou|sogou|360|byte/.test(ua) ? "/zh" : "/en") + r.uri + ".htm",
)
} else {
r.uri = "/index.html"
}
}
r.respHeader(() => {
const t = [], out = r.headersOut;
["Content-MD5", "Age", "Expires", "Last-Modified"].forEach(
i => delete out[i]
)
r.rawHeadersOut.forEach(i => {
const key = i[0].toLowerCase()
if (key.startsWith("x-") || key.startsWith("ohc-")) {
delete out[key]
}
})
out["Cache-Control"] = "max-age=" + 9e5
// Заглавјата на одговорот може да се постават на излез за отстранување грешки, како што е надвор.XXX = 'MSG';
})
Кликнете Debug
, потоа кликнете Објави на целата мрежа.
Напредно Користење: Дистрибуирајте Го Сообраќајот Врз Основа На Регионалната Резолуција
Ако сакате да давате услуги во континентална Кина, а исто така сакате cloudflare
бесплатен меѓународен сообраќај, можете да користите DNS
со регионална резолуција.
На пример, Huawei DNS обезбедува бесплатна регионална анализа, со која сообраќајот на копното на Кина може да оди преку Baidu Smart Cloud, а меѓународниот сообраќај може да оди преку cloudflare
.
Има многу стапици во конфигурацијата на cloudflare
Еве неколку точки што треба да се забележат :
Името На Доменот Е Хостирано Во Други DNS
, Како Да Се Користи cloudflare
Прво поврзете произволно име на домен на cloudflare
, а потоа користете SSL/TLS
→ прилагодено име на домен за да го поврзете главното име на доменот со ова име на домен.
cloudflare R2
Не Може Да Се Пристапи Преку Приспособено Име На Домен
Бидејќи до cloudflare
складирање на објекти R2
не може да се пристапи со приспособено име на домен, треба да се користи складиште на објекти од трета страна за поставување статични датотеки.
Овде backblaze.com земаме како пример за да демонстрираме како да ги врзуваме објектите од трети страни што треба да се складираат на cloudflare
.
Направете кофа на backblaze.com
, поставете која било датотека, кликнете за да ја прелистате датотеката и добијте го името на доменот Friendly URL
, што е f003.backblazeb2.com
овде.
Променете го името на доменот од CNAME
на f003.backblazeb2.com
на cloudflare
и овозможете го проксито.
Измени cloudflare
од SSL
→ режим на шифрирање, поставете го на Full
Додадете го правилото за конверзија како што е прикажано подолу, ставете го на прво место (првиот има најмал приоритет):
Rewrite to
изберете динамична и изменете your_bucketname
во concat("/file/your_bucketname",http.request.uri.path)
во името на вашата корпа.
Покрај тоа, во правилото за конверзија cloudflare
погоре, index.html
се менува во file/your_bucketname/index.html
, а другите конфигурации остануваат исти.