శోధన ఇంజిన్ ఆప్టిమైజేషన్ (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:
దయచేసి ముందుగా xxx.com
వంటి మీ డొమైన్ పేరుకు ఎగువ host:
విలువను సవరించండి.
అప్పుడు, i18n.site -n
, స్టాటిక్ పేజీ out/main/htm
డైరెక్టరీలో రూపొందించబడుతుంది.
వాస్తవానికి, మీరు .i18n/htm/dist.package.json
మరియు .i18n/htm/dist.yml
ని సృష్టించడానికి main
యొక్క కాన్ఫిగరేషన్ని మొదట సూచించడం వంటి ఇతర కాన్ఫిగరేషన్ ఫైల్లను కూడా ప్రారంభించవచ్చు.
ఆపై 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
.i18n/htm/main.yml
లో host:
విలువకు మార్చండి, బహుళ ఆబ్జెక్ట్ స్టోర్లను s3
కింద కాన్ఫిగర్ చేయవచ్చు మరియు region
ఫీల్డ్ ఐచ్ఛికం (చాలా ఆబ్జెక్ట్ స్టోర్లు ఈ ఫీల్డ్ని సెట్ చేయాల్సిన అవసరం లేదు).
ప్రాజెక్ట్ను మళ్లీ ప్రచురించడానికి i18n.site -n
అమలు చేయండి.
మీరు ~/.config/i18n.site.yml
సవరించి, మళ్లీ అప్లోడ్ చేయాలనుకుంటే, అప్లోడ్ కాష్ను క్లియర్ చేయడానికి దయచేసి ప్రాజెక్ట్ రూట్ డైరెక్టరీలో కింది ఆదేశాన్ని ఉపయోగించండి :
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
డైనమిక్ దారి మళ్లింపును ఎంచుకోండి, దయచేసి మళ్లింపు మార్గం concat("/en",http.request.uri.path,".htm")
లోని /en
మీరు శోధన ఇంజిన్లు చేర్చాలనుకుంటున్న డిఫాల్ట్ భాషకు సవరించండి.
Baidu ఇంటెలిజెంట్ క్లౌడ్ కాన్ఫిగరేషన్
మీరు చైనా ప్రధాన భూభాగానికి సేవలను అందించాలనుకుంటే, మీరు Baidu స్మార్ట్ క్లౌడ్ని ఉపయోగించవచ్చు.
Baidu ఆబ్జెక్ట్ స్టోరేజ్కి డేటా అప్లోడ్ చేయబడింది మరియు Baidu కంటెంట్ డిస్ట్రిబ్యూషన్ నెట్వర్క్కు కట్టుబడి ఉంటుంది.
ఆపై స్క్రిప్ట్ను ఈ క్రింది విధంగా రూపొందించండి 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
ఉపయోగించవచ్చు.
ఉదాహరణకు cloudflare
Huawei క్లౌడ్ DNS
cloudflare
యొక్క కాన్ఫిగరేషన్లో చాలా ఆపదలు ఉన్నాయి. ఇక్కడ గమనించవలసిన కొన్ని పాయింట్లు ఉన్నాయి :
డొమైన్ పేరు ఇతర DNS
లో హోస్ట్ చేయబడింది, cloudflare
ఎలా ఉపయోగించాలి
మొదట ఏకపక్ష డొమైన్ పేరును cloudflare
కి బంధించండి, ఆపై ఈ డొమైన్ పేరుకు ప్రధాన డొమైన్ పేరును అనుబంధించడానికి SSL/TLS
→ అనుకూల డొమైన్ పేరును ఉపయోగించండి.
cloudflare R2
అనుకూల డొమైన్ పేరు ద్వారా యాక్సెస్ చేయబడదు
cloudflare
ఆబ్జెక్ట్ స్టోరేజ్ R2
అనుకూలీకరించిన డొమైన్ పేరు ద్వారా యాక్సెస్ చేయబడదు కాబట్టి, స్టాటిక్ ఫైల్లను ఉంచడానికి థర్డ్-పార్టీ ఆబ్జెక్ట్ స్టోరేజ్ని ఉపయోగించాలి.
థర్డ్-పార్టీ ఆబ్జెక్ట్లను ఎలా బంధించాలో మరియు వాటిని cloudflare
కి ఎలా భద్రపరుచుకోవాలో ప్రదర్శించడానికి ఇక్కడ మనం ఉదాహరణగా తీసుకుంటాము backblaze.com
backblaze.com
వద్ద బకెట్ను సృష్టించండి, ఏదైనా ఫైల్ని అప్లోడ్ చేయండి, f003.backblazeb2.com
Friendly URL
పేరును పొందండి.
డొమైన్ పేరును cloudflare
వద్ద CNAME
నుండి f003.backblazeb2.com
కి మార్చండి మరియు ప్రాక్సీని ప్రారంభించండి.
cloudflare
లో SSL
→ ఎన్క్రిప్షన్ మోడ్ని సవరించండి, Full
కి సెట్ చేయండి
దిగువ చూపిన విధంగా మార్పిడి నియమాన్ని జోడించి, దానిని ముందుగా ఉంచండి (మొదటిది అతి తక్కువ ప్రాధాన్యతను కలిగి ఉంటుంది):
Rewrite to
డైనమిక్ని ఎంచుకుని, concat("/file/your_bucketname",http.request.uri.path)
లో your_bucketname
మీ బకెట్ పేరుకు సవరించండి.
అదనంగా, పైన ఉన్న cloudflare
మార్పిడి నియమంలో, index.html
file/your_bucketname/index.html
కి మార్చబడింది మరియు ఇతర కాన్ఫిగరేషన్లు అలాగే ఉంటాయి.