Optimalizace Pro Vyhledávače (Seo)
Princip
i18n.site
používá neaktualizovanou architekturu jedné stránky Aby se usnadnilo indexování vyhledávání, bude pro prohledávače vygenerována samostatná statická stránka a sitemap.xml
.
Když prohledávač vyhledávače použije User-Agent
v požadavku na přístup, požadavek bude přesměrován na statickou stránku pomocí 302
.
Na statických stránkách použijte link
k označení odkazů na různé jazykové verze této stránky, například :
<link rel=alternate hreflang=zh href="https://i18n.site/zh/.htm">
<link rel=alternate hreflang=en href="https://i18n.site/en/.htm">
Místní Konfigurace nginx
Vezměte konfigurační soubor .i18n/htm/main.yml
v demo projektu jako příklad
host: i18n-demo.github.io
seo: true
out:
- fs
pkg:
i: i18n.site
md: i18n.site
cdn:
v:
jsd:
Nejprve prosím upravte hodnotu host:
výše na název vaší domény, například xxx.com
.
Poté, i18n.site -n
, bude vygenerována statická stránka v adresáři out/main/htm
.
Samozřejmě můžete povolit i jiné konfigurační soubory, například nejprve odkazem na konfiguraci main
vytvořit .i18n/htm/dist.package.json
a .i18n/htm/dist.yml
.
Poté spusťte i18n.site -n -c dist
, aby se statická stránka vygenerovala na out/dist/htm
.
nginx
lze nastavit podle konfigurace níže.
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;
# Neukládejte do mezipaměti pracovní skripty serveru příliš dlouho
location = /S.js {
add_header Cache-Control "max-age=600";
}
# Nastavte delší časy mezipaměti pro ostatní statické zdroje
location ~* \.(js|css|htm|html|md|avif|json|ico|xml|rss|gz|mp4|png|svg|txt|webmanifest)$ {
add_header Cache-Control "max-age=999999";
}
# Nastavte, který statický soubor prolézací modul používá jako položku domovské stránky
location = / {
# Pokud $botLang není prázdné, znamená to přístup prohledávače a přesměrování podle nastavené jazykové cesty
if ($botLang) {
return 301 $botLang/flashduty.htm;
}
add_header Cache-Control "max-age=600";
rewrite ^ /index.html break;
}
# Konfigurace jednostránkové aplikace
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/;
}
}
Nakonfigurujte Úložiště Objektů Pro Nahrávání Statických Souborů
Statické soubory lze generovat lokálně, ale běžnějším přístupem je jejich nahrání do úložiště objektů.
Upravte out
nakonfigurovanou výše na :
out:
- s3
Poté upravte ~/.config/i18n.site.yml
a přidejte následující konfiguraci :
site:
i18n.site:
s3:
- endpoint: s3.eu-central-003.backblazeb2.com
ak: # access key
sk: # secret key
bucket: # bucket name
# region:
V konfiguraci změňte i18n.site
na hodnotu host:
v .i18n/htm/main.yml
, více úložišť objektů lze konfigurovat pod s3
a pole region
je volitelné (mnoho úložišť objektů toto pole nemusí nastavovat).
Poté spusťte i18n.site -n
a znovu publikujte projekt.
Pokud jste upravili ~/.config/i18n.site.yml
a chcete znovu nahrát, použijte prosím následující příkaz v kořenovém adresáři projektu k vymazání mezipaměti pro nahrávání :
rm -rf .i18n/data/seo .i18n/data/public
Konfigurace cloudflare
Název domény hostovaný na cloudflare
Pravidla Konverze
Přidejte pravidla převodu, jak je uvedeno níže:
Kód pravidla je následující, upravte prosím kód „i18n.site“ na název vaší domény:
(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")
)
Pravidla Ukládání Do Mezipaměti
Přidejte pravidla mezipaměti následovně:
(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")
Pravidla Přesměrování
Nastavte pravidla přesměrování následovně, upravte prosím kód „i18n.site“ na název vaší domény
(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
Vyberte dynamické přesměrování, upravte prosím /en
v cestě přesměrování concat("/en",http.request.uri.path,".htm")
na výchozí jazyk, který mají vyhledávače zahrnout.
Konfigurace Inteligentního Cloudu Baidu
Pokud potřebujete poskytovat služby pevninské Číně, můžete využít Baidu Smart Cloud .
Data jsou nahrána do Baidu Object Storage a vázána na Baidu Content Distribution Network.
Poté vytvořte skript ve službě 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
// Záhlaví odpovědí lze nastavit pro ladění výstupu, například out.XXX = 'MSG';
})
Klikněte na Debug
a poté na Publikovat v celé síti.
Pokročilé Použití: Distribuujte Provoz Na Základě Regionálního Rozlišení
Pokud chcete poskytovat služby v pevninské Číně a chcete také cloudflare
bezplatný mezinárodní provoz, můžete použít DNS
s regionálním rozlišením.
Například Huawei DNS poskytuje bezplatnou regionální analýzu, se kterou může čínský provoz procházet přes Baidu Smart Cloud a mezinárodní provoz může procházet cloudflare
.
V konfiguraci cloudflare
je mnoho úskalí. Zde je několik bodů, které je třeba poznamenat :
Název Domény Je Hostován v Jiné DNS
, Jak Používat cloudflare
Nejprve svažte libovolný název domény na cloudflare
a poté použijte SSL/TLS
→ vlastní název domény k přiřazení hlavního názvu domény k tomuto názvu domény.
cloudflare R2
Nelze Získat Prostřednictvím Vlastního Názvu Domény
Protože k cloudflare
úložišti objektů R2
nelze přistupovat pomocí přizpůsobeného názvu domény, je třeba k umístění statických souborů použít úložiště objektů třetí strany.
Zde bereme cloudflare
příklad backblaze.com
Vytvořte kbelík na backblaze.com
, nahrajte libovolný soubor, kliknutím soubor procházejte a získejte název domény Friendly URL
, což je zde f003.backblazeb2.com
.
Změňte název domény z CNAME
na f003.backblazeb2.com
na cloudflare
a povolte proxy.
Upravte cloudflare
z SSL
→ režim šifrování, nastavte na Full
Přidejte pravidlo převodu, jak je uvedeno níže, umístěte ho jako první (první má nejnižší prioritu):
Rewrite to
vyberte dynamické a upravte your_bucketname
v concat("/file/your_bucketname",http.request.uri.path)
na název vašeho segmentu.
Navíc ve výše uvedeném pravidle převodu cloudflare
se index.html
změní na file/your_bucketname/index.html
a ostatní konfigurace zůstávají stejné.