Որոնման Համակարգի Օպտիմիզացում (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 գրացուցակում:

Իհարկե, դուք կարող եք նաև միացնել այլ կազմաձևման ֆայլեր, օրինակ՝ նախ նկատի ունենալով main -ի կազմաձևը՝ .i18n/htm/dist.package.json և .i18n/htm/dist.yml ստեղծելու համար:

Այնուհետև գործարկեք 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 host:.i18n/htm/main.yml -ում, մի քանի օբյեկտների պահեստներ կարող են կազմաձևվել 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 Ընտրեք դինամիկ վերահղում, խնդրում ենք փոփոխել /en վերահղման ուղու concat("/en",http.request.uri.path,".htm") ում դեպի այն լռելյայն լեզուն, որը ցանկանում եք ներառել որոնման համակարգերը:

Baidu Intelligent Cloud Configuration

Եթե Ձեզ անհրաժեշտ է ծառայություններ մատուցել մայրցամաքային Չինաստանին, կարող եք օգտագործել Baidu Smart Cloud-ը :

Տվյալները վերբեռնվում են Baidu Object Storage-ում և միացված են Baidu Content Distribution Network-ին:

Այնուհետև ստեղծեք սցենարը 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 տարածաշրջանային լուծմամբ:

Օրինակ, Huawei Cloud- DNS տրամադրում է անվճար տարածաշրջանային վերլուծություն, որի միջոցով մայրցամաքային չինական երթևեկությունը կարող է անցնել Baidu Smart Cloud-ով, իսկ միջազգային տրաֆիկը կարող է անցնել cloudflare :

cloudflare ի կոնֆիգուրացիայի մեջ կան բազմաթիվ որոգայթներ: Ահա մի քանի կետ, որոնք պետք է նշել :

Դոմենի Անունը Տեղակայված Է Այլ DNS -Ում, Ինչպես Օգտագործել cloudflare

Սկզբում կամայական տիրույթի անունը կապեք cloudflare ին, այնուհետև օգտագործեք SSL/TLS → հատուկ տիրույթի անունը՝ հիմնական տիրույթի անունը այս տիրույթի անվան հետ կապելու համար:

cloudflare R2 Հնարավոր Չէ Մուտք Գործել Հատուկ Տիրույթի Անվան Միջոցով

Քանի որ cloudflare օբյեկտների պահեստը R2 չի կարող մուտք գործել հարմարեցված տիրույթի անունով, անհրաժեշտ է օգտագործել երրորդ կողմի օբյեկտների պահեստավորում՝ ստատիկ ֆայլեր տեղադրելու համար:

Այստեղ մենք վերցնում cloudflare backblaze.com

Ստեղծեք դույլ backblaze.com -ում, վերբեռնեք ցանկացած ֆայլ, սեղմեք՝ ֆայլը թերթելու համար և ստացեք Friendly URL -ի տիրույթի անունը, որն այստեղ f003.backblazeb2.com է:

Փոխեք տիրույթի անունը CNAME ից f003.backblazeb2.com ից cloudflare ում և միացրեք վստահված անձը:

Փոփոխել cloudflare SSL -ից → գաղտնագրման ռեժիմ, սահմանել Full

Ավելացրեք փոխակերպման կանոնը, ինչպես ցույց է տրված ստորև, դրեք այն առաջինը (առաջինն ունի ամենացածր առաջնահերթությունը).

Rewrite to ընտրեք դինամիկ և փոփոխեք your_bucketname concat("/file/your_bucketname",http.request.uri.path) -ում ձեր դույլի անվան համար:

Բացի այդ, վերը նշված cloudflare փոխակերպման կանոնում index.html փոխվում է file/your_bucketname/index.html ի, իսկ մյուս կոնֆիգուրացիաները մնում են նույնը: