සෙවුම් යන්ත්ර ප්රශස්තකරණය (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:

කරුණාකර පළමුව ඉහත host: හි අගය xxx.com වැනි ඔබේ වසම් නාමයට වෙනස් කරන්න.

එවිට, 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";
  }

# මුල් පිටු ප්රවේශය ලෙස crawler භාවිතා කරන ස්ථිතික ගොනුව සකසන්න
  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 Smart Cloud භාවිත කළ හැක.

Baidu Object Storage වෙත දත්ත උඩුගත කර 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
  // ප්රතිචාර ශීර්ෂ නිදොස් කිරීමේ ප්රතිදානයට සැකසිය හැක, එනම් out.XXX = 'MSG';
})

Debug ක්ලික් කරන්න, ඉන්පසු මුළු ජාලයටම ප්රකාශ කරන්න ක්ලික් කරන්න.

උසස් භාවිතය: කලාපීය විභේදනය මත පදනම්ව ගමනාගමනය බෙදා හැරීම

ඔබට චීනයේ ප්රධාන භූමියේ සේවා සැපයීමට අවශ්ය නම් සහ නොමිලේ ජාත්යන්තර ගමනාගමනය cloudflare අවශ්ය නම්, ඔබට කලාපීය විභේදනය සමඟ DNS භාවිතා කළ හැක.

උදාහරණයක් ලෙස cloudflare Huawei Cloud DNS

cloudflare හි වින්යාසය තුළ බොහෝ අන්තරායන් ඇත. මෙහි සටහන් කළ යුතු කරුණු කිහිපයක් තිබේ :

වසම් නාමය වෙනත් DNS හි සංග්රහ කර ඇත, cloudflare භාවිතා කරන්නේ කෙසේද

පළමුව අත්තනෝමතික වසම් නාමයක් cloudflare ට බැඳ, පසුව මෙම වසම් නාමයට ප්රධාන වසම් නාමය සම්බන්ධ කිරීමට SSL/TLS → අභිරුචි ඩොමේන් නාමය භාවිතා කරන්න.

අභිරුචි ඩොමේන් නාමයක් හරහා cloudflare R2 වෙත ප්රවේශ විය නොහැක

බිල්ට් cloudflare ඉන් වස්තු ආචයනය R2 අභිරුචිකරණය කළ වසම් නාමයකින් ප්රවේශ විය නොහැකි නිසා, ස්ථිතික ගොනු තැබීමට තුන්වන පාර්ශ්ව වස්තු ගබඩාවක් භාවිතා කිරීමට අවශ්ය වේ.

cloudflare හි ගබඩා කළ යුතු තෙවන පාර්ශවීය වස්තු බැඳිය යුතු ආකාරය නිරූපණය කිරීමට backblaze.com උදාහරණයක් ලෙස ගනිමු.

backblaze.com ට බාල්දියක් සාදන්න, ඕනෑම ගොනුවක් උඩුගත කරන්න, ගොනුව බ්රවුස් කිරීමට ක්ලික් කරන්න, සහ මෙහි f003.backblazeb2.com වන Friendly URL හි ඩොමේන් නාමය ලබා ගන්න.

වසම් නාමය cloudflareCNAME සිට f003.backblazeb2.com දක්වා වෙනස් කර ප්රොක්සි සක්රීය කරන්න.

cloudflare න් SSL → සංකේතාංකන මාදිලිය වෙනස් කරන්න, Full ලෙස සකසන්න

පහත දැක්වෙන පරිදි පරිවර්තන රීතිය එක් කරන්න, එය මුලින්ම තබන්න (පළමු එකට අඩුම ප්රමුඛතාවය ඇත):

Rewrite to ගතික තෝරන්න සහ your_bucketname in concat("/file/your_bucketname",http.request.uri.path) ඔබේ බාල්දියේ නමට වෙනස් කරන්න.

මීට අමතරව, ඉහත cloudflare පරිවර්තන රීතියේ, index.html file/your_bucketname/index.html ලෙස වෙනස් කර ඇති අතර, අනෙකුත් වින්යාසයන් එලෙසම පවතී.