Optimizimi I Motorit Të Kërkimit (Seo)
Parim
i18n.site
miraton një arkitekturë të vetme faqeje pa rifreskim Për të lehtësuar indeksimin e kërkimit, do të krijohet një faqe e veçantë statike dhe sitemap.xml
për zvarritjet.
Kur User-Agent
e kërkesës për akses përdoret nga zvarritësi i motorit të kërkimit, kërkesa do të ridrejtohet në faqen statike nëpërmjet 302
.
Në faqet statike, përdorni link
për të treguar lidhjet në versione të ndryshme gjuhësore të kësaj faqeje, si p.sh. :
<link rel=alternate hreflang=zh href="https://i18n.site/zh/.htm">
<link rel=alternate hreflang=en href="https://i18n.site/en/.htm">
Konfigurimi Lokal nginx
Merrni si shembull skedarin e konfigurimit .i18n/htm/main.yml
në projektin demo
host: i18n-demo.github.io
seo: true
out:
- fs
pkg:
i: i18n.site
md: i18n.site
cdn:
v:
jsd:
Ju lutemi së pari modifikoni vlerën e host:
më sipër në emrin e domenit tuaj, si p.sh. xxx.com
.
Pastaj, i18n.site -n
, faqja statike do të gjenerohet në direktorinë out/main/htm
.
Sigurisht, mund të aktivizoni edhe skedarë të tjerë konfigurimi, si p.sh. fillimisht t'i referoheni konfigurimit të main
për të krijuar .i18n/htm/dist.package.json
dhe .i18n/htm/dist.yml
.
Pastaj ekzekutoni i18n.site -n -c dist
në mënyrë që faqja statike të gjenerohet në out/dist/htm
.
nginx
mund të vendoset duke iu referuar konfigurimit më poshtë.
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;
# Mos i ruani skriptet e punonjësve të serverit për një kohë të gjatë
location = /S.js {
add_header Cache-Control "max-age=600";
}
# Vendosni kohë më të gjata të memories për burime të tjera statike
location ~* \.(js|css|htm|html|md|avif|json|ico|xml|rss|gz|mp4|png|svg|txt|webmanifest)$ {
add_header Cache-Control "max-age=999999";
}
# Cakto cilin skedar statik përdor zvarritësi si hyrje në faqen kryesore
location = / {
# Nëse $botLang nuk është bosh, do të thotë akses dhe ridrejtim i zvarritësit sipas shtegut të caktuar të gjuhës
if ($botLang) {
return 301 $botLang/flashduty.htm;
}
add_header Cache-Control "max-age=600";
rewrite ^ /index.html break;
}
# Konfigurimi i aplikacionit me një faqe
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/;
}
}
Konfiguro Ruajtjen E Objekteve Për Ngarkimin E Skedarëve Statikë
Skedarët statikë mund të gjenerohen në nivel lokal, por një qasje më e zakonshme është ngarkimi i tyre në ruajtjen e objekteve.
Modifiko out
e konfiguruar më lart në :
out:
- s3
Pastaj, modifikoni ~/.config/i18n.site.yml
dhe shtoni konfigurimin e mëposhtëm :
site:
i18n.site:
s3:
- endpoint: s3.eu-central-003.backblazeb2.com
ak: # access key
sk: # secret key
bucket: # bucket name
# region:
Në konfigurim, ju lutemi ndryshoni i18n.site
në vlerën host:
në .i18n/htm/main.yml
, dyqane të shumta objektesh mund të konfigurohen nën s3
dhe fusha region
është opsionale (shumë dyqane objektesh nuk kanë nevojë të vendosin këtë fushë).
Pastaj ekzekutoni i18n.site -n
për të ripublikuar projektin.
Nëse keni modifikuar ~/.config/i18n.site.yml
dhe dëshironi të ri-ngarkoni, ju lutemi përdorni komandën e mëposhtme në direktoriumin rrënjë të projektit për të pastruar cache-in e ngarkimit :
rm -rf .i18n/data/seo .i18n/data/public
Konfigurimi I cloudflare
Emri i domenit është pritur në cloudflare
Rregullat E Konvertimit
Shtoni rregullat e konvertimit siç tregohet më poshtë:
Kodi i rregullit është si më poshtë, ju lutemi modifikoni kodin "i18n.site" në emrin e domenit tuaj:
(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")
)
Rregullat E Memorizimit
Shtoni rregullat e cache si më poshtë:
(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")
Rregullat E Ridrejtimit
Vendosni rregullat e ridrejtimit si më poshtë, ju lutemi modifikoni kodin "i18n.site" në emrin e domenit tuaj
(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
Zgjidhni ridrejtimin dinamik, ju lutemi modifikoni /en
në rrugën e ridrejtimit concat("/en",http.request.uri.path,".htm")
në gjuhën e paracaktuar që dëshironi të përfshijnë motorët e kërkimit.
Konfigurimi Inteligjent I Resë Kompjuterike Baidu
Nëse keni nevojë të ofroni shërbime në Kinën kontinentale, mund të përdorni Baidu Smart Cloud .
Të dhënat ngarkohen në hapësirën ruajtëse të objekteve Baidu dhe lidhen me rrjetin e shpërndarjes së përmbajtjes Baidu.
Pastaj krijoni skriptin në shërbimin e EdgeJS si më poshtë
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
// Mund të vendosni kokën e përgjigjes që të korrigjojë daljen, si p.sh. out.XXX = 'MSG';
})
Klikoni Debug
, më pas kliko Publiko në të gjithë rrjetin.
Përdorimi I Avancuar: Shpërndani Trafikun Bazuar Në Rezolucionin Rajonal
Nëse dëshironi të ofroni shërbime në territorin e Kinës dhe gjithashtu dëshironi cloudflare
trafik ndërkombëtar falas, mund të përdorni DNS
me rezolucion rajonal.
Për shembull, Huawei DNS ofron analiza rajonale falas, me të cilat trafiku kontinental kinez mund të kalojë përmes Baidu Smart Cloud, dhe trafiku ndërkombëtar mund të kalojë përmes cloudflare
.
Ka shumë gracka në konfigurimin e cloudflare
Këtu janë disa pika për t'u vënë re :
Emri I Domenit Është Pritur Në DNS
Të Tjera, Si Të Përdoret cloudflare
Fillimisht lidhni një emër domain arbitrar me cloudflare
, dhe më pas përdorni SSL/TLS
→ emër domain të personalizuar për të lidhur emrin e domain-it kryesor me këtë emër domeni.
cloudflare R2
Nuk Mund Të Aksesohet Përmes Një Emri Të Personalizuar Domeni
Për shkak se ruajtja e cloudflare
e objektit R2
nuk mund të aksesohet nga një emër domaini i personalizuar, duhet të përdoret një ruajtje e objekteve të palëve të treta për të vendosur skedarë statikë.
backblaze.com marrim si shembull për të demonstruar se si të lidhim objektet e palëve të treta që do të ruhen në cloudflare
.
Krijoni një kovë në backblaze.com
, ngarkoni çdo skedar, klikoni për të shfletuar skedarin dhe merrni emrin e domenit Friendly URL
, që është f003.backblazeb2.com
këtu.
Ndryshoni emrin e domenit nga CNAME
në f003.backblazeb2.com
në cloudflare
dhe aktivizoni përfaqësuesin.
Modifiko cloudflare
nga SSL
→ modaliteti i enkriptimit, vendoset në Full
Shtoni rregullin e konvertimit siç tregohet më poshtë, vendoseni në fillim (i pari ka përparësinë më të ulët):
Rewrite to
zgjidhni dinamike dhe modifikoni your_bucketname
në concat("/file/your_bucketname",http.request.uri.path)
në emrin e kovës tuaj.
Përveç kësaj, në rregullin e konvertimit cloudflare
më sipër, index.html
ndryshohet në file/your_bucketname/index.html
dhe konfigurimet e tjera mbeten të njëjta.