সন্ধান ইঞ্জিন অনুকূলন (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 .i18n/htm/main.ymlhost: ৰ মানলৈ সলনি কৰক, একাধিক বস্তু সংৰক্ষণক s3 অন্তৰ্গত বিন্যাস কৰিব পাৰি, আৰু region ক্ষেত্ৰ বৈকল্পিক (বহু বস্তু সংৰক্ষণে এই ক্ষেত্ৰ সংহতি কৰাৰ প্ৰয়োজন নাই) ।

তাৰ পিছত প্ৰকল্পটো পুনৰ প্ৰকাশ কৰিবলৈ i18n.site -n চলাওক।

যদি আপুনি ~/.config/i18n.site.yml পৰিবৰ্তন কৰিছে আৰু পুনৰায় আপল'ড কৰিব বিচাৰে, অনুগ্ৰহ কৰি প্ৰকল্পৰ ৰূট পঞ্জিকাত নিম্নলিখিত আদেশ ব্যৱহাৰ কৰক আপল'ড কেশ্ব পৰিষ্কাৰ কৰিবলে :

rm -rf .i18n/data/seo .i18n/data/public

ক্লাউডফ্লেয়াৰ বিন্যাস

ডমেইন নাম হ'ষ্ট কৰা হৈছে 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 edge service ত লিপিটো তলত দিয়া ধৰণে সৃষ্টি কৰক

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 স্মাৰ্ট ক্লাউডৰ জৰিয়তে যাব পাৰে, আৰু আন্তঃৰাষ্ট্ৰীয় ট্ৰেফিক cloudflare মাজেৰে যাব পাৰে।

cloudflare ৰ বিন্যাসত বহুতো ফান্দ আছে। ইয়াত মন কৰিবলগীয়া কেইটামান কথা আছে :

ডমেইন নামটো অন্য DNS ত হ'ষ্ট কৰা হৈছে, cloudflare কেনেকৈ ব্যৱহাৰ কৰিব লাগে

প্ৰথমে এটা ইচ্ছাকৃত ডমেইন নাম cloudflare লে বান্ধক, আৰু তাৰ পিছত এই ডমেইন নামৰ সৈতে মূল ডমেইন নাম সংযুক্ত কৰিবলে SSL/TLS → স্বনিৰ্বাচিত ডমেইন নাম ব্যৱহাৰ কৰক।

cloudflare R2 এটা স্বনিৰ্বাচিত ডমেইন নামৰ যোগেদি অভিগম কৰিব নোৱাৰি

যিহেতু cloudflare বস্তু সংৰক্ষণ R2 এটা স্বনিৰ্বাচিত ডমেইন নামৰ দ্বাৰা অভিগম কৰিব নোৱাৰি, এটা তৃতীয়-পক্ষ বস্তু সংৰক্ষণ স্থিতিশীল নথিপত্ৰসমূহ স্থাপন কৰিবলে ব্যৱহাৰ কৰিব লাগিব।

ইয়াত আমি তৃতীয়-পক্ষৰ বস্তুবোৰ কেনেকৈ বান্ধিব লাগে আৰু সিহতক cloudflare লৈ সংৰক্ষণ কৰিব লাগে তাক দেখুৱাবলৈ backblaze.com

backblaze.com ত এটা বাকেট সৃষ্টি কৰক, যিকোনো ফাইল আপল'ড কৰক, ফাইলটো ব্ৰাউজ কৰিবলৈ ক্লিক কৰক, আৰু Friendly URL ৰ ডমেইন নাম পাওক, যিটো ইয়াত f003.backblazeb2.com

ডমেইন নাম cloudflareCNAME ৰ পৰা f003.backblazeb2.com লৈ সলনি কৰক আৰু প্ৰক্সি সামৰ্থবান কৰক।

SSLcloudflare পৰিবৰ্তন কৰক → ইনক্ৰিপষণ ধৰণ, Full লে সংহতি কৰক

তলত দেখুওৱাৰ দৰে ৰূপান্তৰ নিয়মটো যোগ কৰক, ইয়াক প্ৰথমে ৰাখক (প্ৰথমটোৰ অগ্ৰাধিকাৰ সৰ্বনিম্ন):

Rewrite to গতিশীল নিৰ্ব্বাচন কৰক আৰু concat("/file/your_bucketname",http.request.uri.path)your_bucketname আপোনাৰ বাকেটৰ নামলৈ পৰিবৰ্তন কৰক ।

ইয়াৰ উপৰিও, ওপৰৰ cloudflare ৰূপান্তৰ নিয়মত, index.html file/your_bucketname/index.html লৈ সলনি কৰা হয়, আৰু অন্য বিন্যাসসমূহ একেই থাকে।