தேடுபொறி உகப்பாக்கம் (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";
  }

# முகப்புப் பக்க நுழைவாக கிராலர் பயன்படுத்தும் நிலையான கோப்பை அமைக்கவும்
  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 ஆப்ஜெக்ட் ஸ்டோரேஜில் தரவு பதிவேற்றப்பட்டு, 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 Cloud DNS

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 ஆக மாற்றப்பட்டது, மற்ற கட்டமைப்புகள் அப்படியே இருக்கும்.