Optimeiddio Peiriannau Chwilio (Seo)
Egwyddor
Mae i18n.site
yn mabwysiadu pensaernïaeth un dudalen nad yw'n adnewyddu Er mwyn hwyluso mynegeio chwilio, bydd tudalen statig ar wahân ac sitemap.xml
yn cael eu cynhyrchu i ymlusgwyr eu cropian.
Pan ddefnyddir User-Agent
y cais mynediad gan ymlusgwr y peiriant chwilio, bydd y cais yn cael ei ailgyfeirio i'r dudalen statig trwy 302
.
Ar dudalennau sefydlog, defnyddiwch link
i nodi dolenni i fersiynau iaith gwahanol o'r dudalen hon, megis :
<link rel=alternate hreflang=zh href="https://i18n.site/zh/.htm">
<link rel=alternate hreflang=en href="https://i18n.site/en/.htm">
Cyfluniad nginx Lleol
Cymerwch y ffeil ffurfweddu .i18n/htm/main.yml
yn y prosiect demo fel enghraifft
host: i18n-demo.github.io
seo: true
out:
- fs
pkg:
i: i18n.site
md: i18n.site
cdn:
v:
jsd:
Yn gyntaf, addaswch werth host:
uchod i'ch enw parth, fel xxx.com
.
Yna, i18n.site -n
, bydd y dudalen statig yn cael ei chynhyrchu yn y cyfeiriadur out/main/htm
.
Wrth gwrs, gallwch chi hefyd alluogi ffeiliau cyfluniad eraill, megis cyfeirio'n gyntaf at gyfluniad main
i greu .i18n/htm/dist.package.json
a .i18n/htm/dist.yml
.
Yna rhedwch i18n.site -n -c dist
fel bod y dudalen statig yn cael ei chynhyrchu i out/dist/htm
.
Gellir gosod nginx
trwy gyfeirio at y ffurfweddiad isod.
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;
# Peidiwch â storio sgriptiau gweithwyr gweinydd am gyfnod rhy hir
location = /S.js {
add_header Cache-Control "max-age=600";
}
# Gosod amseroedd storfa hirach ar gyfer adnoddau sefydlog eraill
location ~* \.(js|css|htm|html|md|avif|json|ico|xml|rss|gz|mp4|png|svg|txt|webmanifest)$ {
add_header Cache-Control "max-age=999999";
}
# Gosod pa ffeil statig y mae'r ymlusgwr yn ei defnyddio fel cofnod hafan
location = / {
# Os nad yw $botLang yn wag, mae'n golygu mynediad ymlusgo ac ailgyfeirio yn ôl y llwybr iaith a osodwyd
if ($botLang) {
return 301 $botLang/flashduty.htm;
}
add_header Cache-Control "max-age=600";
rewrite ^ /index.html break;
}
# Ffurfweddiad cais tudalen sengl
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/;
}
}
Ffurfweddu Storfa Gwrthrychau Ar Gyfer Uwchlwytho Ffeiliau Statig
Gellir cynhyrchu ffeiliau statig yn lleol, ond dull mwy cyffredin yw eu huwchlwytho i storfa gwrthrychau.
Addasu'r out
sydd wedi'i ffurfweddu uchod i :
out:
- s3
Yna, golygu ~/.config/i18n.site.yml
ac ychwanegu'r ffurfweddiad canlynol :
site:
i18n.site:
s3:
- endpoint: s3.eu-central-003.backblazeb2.com
ak: # access key
sk: # secret key
bucket: # bucket name
# region:
Yn y ffurfweddiad, newidiwch i18n.site
i werth host:
mewn .i18n/htm/main.yml
, gellir ffurfweddu storfeydd gwrthrychau lluosog o dan s3
, ac mae'r maes region
yn ddewisol (nid oes angen i lawer o siopau gwrthrychau osod y maes hwn).
Yna rhedwch i18n.site -n
i ailgyhoeddi'r prosiect.
Os ydych chi wedi addasu ~/.config/i18n.site.yml
ac eisiau ail-lwytho i fyny, defnyddiwch y gorchymyn canlynol yng nghyfeiriadur gwraidd y prosiect i glirio'r storfa uwchlwytho :
rm -rf .i18n/data/seo .i18n/data/public
Cyfluniad cloudflare
Enw parth wedi'i letya i cloudflare
Rheolau Trosi
Ychwanegwch y rheolau trosi fel y dangosir isod:
Mae'r cod rheol fel a ganlyn, addaswch y cod "i18n.site" i'ch enw parth:
(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")
)
Rheolau Caching
Ychwanegu rheolau storfa fel a ganlyn:
(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")
Rheolau Ailgyfeirio
Gosodwch y rheolau ailgyfeirio fel a ganlyn, addaswch y cod "i18n.site" i'ch enw parth
(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
Dewiswch ailgyfeirio deinamig, addaswch /en
yn llwybr ailgyfeirio concat("/en",http.request.uri.path,".htm")
i'r iaith ddiofyn yr ydych am i beiriannau chwilio ei chynnwys.
Ffurfweddiad Cwmwl Deallus Baidu
Os oes angen i chi ddarparu gwasanaethau i dir mawr Tsieina, gallwch ddefnyddio Baidu Smart Cloud .
Mae data'n cael ei lanlwytho i Baidu Object Storage a'i rwymo i Baidu Content Distribution Network.
Yna crëwch y sgript yn EdgeJS gwasanaeth ymyl fel a ganlyn
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
// Gellir gosod penawdau ymateb i allbwn dadfygio, megis out.XXX = 'MSG';
})
Cliciwch Debug
, yna cliciwch Cyhoeddi i'r rhwydwaith cyfan.
Defnydd Uwch: Dosbarthu Traffig Yn Seiliedig Ar Ddatrysiad Rhanbarthol
Os ydych chi eisiau darparu gwasanaethau ar dir mawr Tsieina a hefyd eisiau cloudflare
traffig rhyngwladol am ddim, gallwch ddefnyddio DNS
gyda datrysiad rhanbarthol.
Er enghraifft, mae Huawei DNS cloudflare
Mae yna lawer o beryglon yng nghyfluniad cloudflare
Dyma rai pwyntiau i'w nodi :
Mae'r Enw Parth Yn Cael Ei Letya Mewn DNS
Arall, Sut I Ddefnyddio cloudflare
Yn gyntaf rhwymwch enw parth mympwyol i cloudflare
, ac yna defnyddiwch SSL/TLS
→ enw parth arferol i gysylltu'r prif enw parth â'r enw parth hwn.
Ni Ellir Cyrchu cloudflare R2
Trwy Enw Parth Wedi'i Deilwra
Oherwydd nad oes modd cyrchu'r storfa gwrthrychau R2
sydd wedi'i cloudflare
i mewn trwy ddefnyddio enw parth wedi'i addasu, mae angen defnyddio storfa gwrthrychau trydydd parti i osod ffeiliau statig.
Yma rydym yn cymryd backblaze.com fel enghraifft i ddangos sut i rwymo gwrthrychau trydydd parti a'u storio i cloudflare
.
Creu bwced ar backblaze.com
, uwchlwytho unrhyw ffeil, cliciwch i bori'r ffeil, a chael enw parth Friendly URL
, sef f003.backblazeb2.com
yma.
Newidiwch yr enw parth o CNAME
i f003.backblazeb2.com
yn cloudflare
a galluogi'r dirprwy.
Addasu cloudflare
o SSL
→ modd amgryptio, gosod i Full
Ychwanegwch y rheol trosi fel y dangosir isod, rhowch hi yn gyntaf (yr un cyntaf sydd â'r flaenoriaeth isaf):
Rewrite to
dewiswch deinamig ac addaswch your_bucketname
mewn concat("/file/your_bucketname",http.request.uri.path)
i'ch enw bwced.
Yn ogystal, yn y rheol trosi cloudflare
uchod, mae index.html
yn cael ei newid i file/your_bucketname/index.html
, ac mae ffurfweddiadau eraill yn aros yr un fath.