सर्च इंजन अनुकूलन (एसईओ) के बारे में जानकारी दिहल गइल बा।
सिद्धांत के रूप में बा
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.yml
में host:
के मान में बदल दीं, कई गो ऑब्जेक्ट स्टोर सभ के 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
ओह डिफ़ॉल्ट भाषा में संशोधित करीं जवना के रउरा चाहत बानी कि सर्च इंजन शामिल होखे.
बैडू इंटेलिजेंट क्लाउड कॉन्फ़िगरेशन के बा
अगर रउरा मुख्य भूमि चीन के सेवा देबे के बा त रउरा बैडू स्मार्ट क्लाउड के इस्तेमाल कर सकीलें.
डेटा के बैडू ऑब्जेक्ट स्टोरेज में अपलोड कइल जाला आ बैडू कंटेंट डिस्ट्रीब्यूशन नेटवर्क से बान्हल जाला।
एकरा बाद 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
इस्तेमाल कर सकेनी।
उदाहरण खातिर, हुवावे DNS मुफ्त क्षेत्रीय विश्लेषण प्रदान करेला, जवना के संगे मुख्य भूमि चीनी यातायात बैडू स्मार्ट क्लाउड के माध्यम से जा सकता, अवुरी अंतर्राष्ट्रीय यातायात cloudflare
के माध्यम से जा सकता।
cloudflare
के कॉन्फ़िगरेशन में कई गो जाल बा, इहाँ कुछ बिंदु बा जवना में ध्यान देवे के बा :
डोमेन नाम अन्य DNS
में होस्ट कइल गइल बा, cloudflare
इस्तेमाल कईसे कइल जाला
पहिले कवनो मनमाना डोमेन नाँव के cloudflare
से बाइंड करीं, आ फिर SSL/TLS
→ कस्टम डोमेन नाँव के इस्तेमाल करीं जेह से मुख्य डोमेन नाँव के एह डोमेन नाँव से जोड़ल जा सके।
cloudflare R2
कस्टम डोमेन नाँव के माध्यम से एक्सेस ना कइल जा सके ला
चूँकि बिल्ट cloudflare
इन ऑब्जेक्ट स्टोरेज R2
के कस्टमाइज्ड डोमेन नाँव से एक्सेस ना कइल जा सके ला, स्थिर फाइल सभ के रखे खातिर थर्ड पार्टी ऑब्जेक्ट स्टोरेज के इस्तेमाल करे के जरूरत होला।
cloudflare
हमनी के backblaze.com
backblaze.com
पर बाल्टी बनाईं, कवनो फाइल अपलोड करीं, फाइल के ब्राउज करे खातिर क्लिक करीं, आ Friendly URL
के डोमेन नाम पाईं, जवन कि एहिजा f003.backblazeb2.com
बा.
डोमेन नाम के cloudflare
पर CNAME
से f003.backblazeb2.com
में बदलीं आ प्रॉक्सी के सक्षम करीं.
SSL
में से cloudflare
के संशोधित करीं → एन्क्रिप्शन मोड, Full
पर सेट करीं
नीचे देखावल तरीका से रूपांतरण नियम जोड़ीं, एकरा के पहिले रखीं (पहिला के प्राथमिकता सभसे कम बा):
Rewrite to
डायनामिक चुनीं आ concat("/file/your_bucketname",http.request.uri.path)
में your_bucketname
अपना बाल्टी के नाम में संशोधित करीं।
एकरे अलावा, ऊपर दिहल गइल cloudflare
रूपांतरण नियम में, index.html
के file/your_bucketname/index.html
में बदल दिहल गइल बा, आ अउरी बिन्यास सभ एकही नियर रहे लें।