સર્ચ એન્જિન ઓપ્ટિમાઇઝેશન (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
રૂપાંતર નિયમો
નીચે બતાવ્યા પ્રમાણે રૂપાંતરણ નિયમો ઉમેરો:
નિયમ કોડ નીચે મુજબ છે, કૃપા કરીને તમારા ડોમેન નામમાં કોડ "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
// તમે આઉટપુટને ડીબગ કરવા માટે પ્રતિભાવ હેડરને સેટ કરી શકો છો, જેમ કે out.XXX = 'MSG';
})
Debug
પર ક્લિક કરો, પછી સમગ્ર નેટવર્ક પર પ્રકાશિત કરો ક્લિક કરો.
અદ્યતન ઉપયોગ: પ્રાદેશિક રીઝોલ્યુશનના આધારે ટ્રાફિકનું વિતરણ કરો
જો તમે મેઇનલેન્ડ ચાઇનામાં સેવાઓ પ્રદાન કરવા માંગતા હો અને cloudflare
મફત આંતરરાષ્ટ્રીય ટ્રાફિક પણ ઇચ્છતા હો, તો તમે પ્રાદેશિક રીઝોલ્યુશન સાથે DNS
ઉપયોગ કરી શકો છો.
ઉદાહરણ તરીકે, Huawei DNS મફત પ્રાદેશિક વિશ્લેષણ પ્રદાન કરે છે, જેની સાથે મેઇનલેન્ડ ચાઇનીઝ ટ્રાફિક બાયડુ સ્માર્ટ ક્લાઉડમાંથી પસાર થઈ શકે છે, અને આંતરરાષ્ટ્રીય ટ્રાફિક 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
પર બદલો અને પ્રોક્સીને સક્ષમ કરો.
SSL
માંથી cloudflare
સંશોધિત કરો → એન્ક્રિપ્શન મોડ, Full
પર સેટ કરો
નીચે બતાવ્યા પ્રમાણે રૂપાંતરનો નિયમ ઉમેરો, તેને પ્રથમ મૂકો (પ્રથમને સૌથી ઓછી પ્રાથમિકતા છે):
Rewrite to
ડાયનેમિક પસંદ કરો અને તમારા બકેટના નામમાં your_bucketname
માં concat("/file/your_bucketname",http.request.uri.path)
ફેરફાર કરો.
વધુમાં, ઉપરના cloudflare
રૂપાંતરણ નિયમમાં, index.html
file/your_bucketname/index.html
માં બદલીને કરવામાં આવે છે, અને અન્ય ગોઠવણીઓ સમાન રહે છે.