Оптимизација Претраживача (Сео)
Принцип
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">
Локална Нгинк Конфигурација
Узмите конфигурациону датотеку .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
и желите да поново отпремите, користите следећу команду у основном директоријуму пројекта да обришете кеш за отпремање :
rm -rf .i18n/data/seo .i18n/data/public
Цлоудфларе Конфигурација
Име домена хостовано на cloudflare
Правила Конверзије
Додајте правила конверзије као што је приказано у наставку:
Код правила је следећи, измените код „и18н.сите“ у име вашег домена:
(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")
Правила Преусмеравања
Поставите правила преусмеравања на следећи начин, измените код „и18н.сите“ у име вашег домена
(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")
на подразумевани језик који желите да претраживачи укључе.
Баиду Интеллигент Цлоуд Цонфигуратион
Ако треба да пружате услуге континенталној Кини, можете да користите Баиду Смарт Цлоуд .
Подаци се отпремају у Баиду Објецт Стораге и везују за Баиду мрежу за дистрибуцију садржаја.
Затим креирајте скрипту у услузи 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
// Можете подесити заглавље одговора да отклања грешке на излазу, као што је оут.КСКСКС = 'МСГ';
})
Кликните на Debug
, а затим кликните на Објави на целој мрежи.
Напредна Употреба: Дистрибуирајте Саобраћај На Основу Регионалне Резолуције
Ако желите да пружате услуге у континенталној Кини и такође желите cloudflare
бесплатног међународног саобраћаја, можете користити DNS
са регионалном резолуцијом.
На пример, Хуавеи DNS пружа бесплатну регионалну анализу, са којом саобраћај у континенталној Кини може да иде преко Баиду Смарт Цлоуд-а, а међународни саобраћај може да прође кроз cloudflare
.
Постоји много замки у конфигурацији cloudflare
Ево неколико тачака које треба приметити :
Име Домена Се Налази У Другом DNS
, Како Се Користи cloudflare
Прво повежите произвољно име домена на cloudflare
, а затим користите SSL/TLS
→ прилагођено име домена да повежете име главног домена са овим именом домена.
cloudflare R2
Се Не Може Приступити Преко Прилагођеног Имена Домена
Пошто се cloudflare
складишту објеката R2
не може приступити преко прилагођеног имена домена, потребно је користити складиште објеката треће стране за постављање статичких датотека.
Овде cloudflare
backblaze.com
Направите корпу на 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
, а остале конфигурације остају исте.