ސަރޗް އިންޖީން އޮޕްޓިމައިޒޭޝަން (އެސްއީއޯ)
އުސޫލުންނެވެ
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
ސަރޗް އިންޖީނުތަކުގައި ހިމަނަން ބޭނުންވާ ޑިފޯލްޓް ބަހަށް ބަދަލުކުރައްވާށެވެ.
ބައިޑޫ އިންޓެލިޖެންޓް ކްލައުޑް ކޮންފިގްރޭޝަން
ޗައިނާގެ ބިންގަނޑަށް ހިދުމަތް ދޭން ޖެހިއްޖެނަމަ ބައިޑޫ ސްމާޓް ކްލައުޑް ބޭނުން ކުރެވިދާނެ އެވެ.
ޑޭޓާ ބައިދޫ އޮބްޖެކްޓް ސްޓޯރޭޖަށް އަޕްލޯޑްކޮށް ބައިދޫ ކޮންޓެންޓް ޑިސްޓްރިބިއުޝަން ނެޓްވޯކަށް ބައުންޑް ކުރެވެއެވެ.
ދެން ތިރީގައިވާ ގޮތަށް 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
ކަސްޓަމައިޒް ކޮށްފައިވާ ޑޮމެއިން ނަމަކުން އެކްސެސް ނުކުރެވޭތީ، ސްޓޭޓިކް ފައިލްތައް ބެހެއްޓުމަށް ތިންވަނަ ފަރާތެއްގެ އޮބްޖެކްޓް ސްޓޯރޭޖެއް ބޭނުން ކުރަން ޖެހެއެވެ.
backblaze.com އަޅުގަނޑުމެން މިސާލެއްގެ ގޮތުން ނަގާނީ ތިންވަނަ ފަރާތެއްގެ ތަކެތި ބައިންޑްކޮށް cloudflare
އަށް ރައްކާކުރާނެ ގޮތް ދައްކާލުމަށެވެ.
backblaze.com
ގައި ބާލިދީއެއް އުފައްދައި، ކޮންމެ ފައިލެއް އަޕްލޯޑްކޮށް، ފައިލް ބްރައުޒް ކުރުމަށް ކްލިކްކޮށް، Friendly URL
ގެ ޑޮމެއިން ނަން ހޯދާ، މިއީ މިތަނުގައި f003.backblazeb2.com
.
ޑޮމެއިން ނަން cloudflare
ގައި CNAME
އިން f003.backblazeb2.com
އަށް ބަދަލުކޮށް ޕްރޮކްސީ އެނެބަލް ކުރުން.
SSL
އިން cloudflare
ބަދަލުކުރުން → އެންކްރިޕްޝަން މޯޑް، Full
އަށް ސެޓްކުރުން
ތިރީގައިވާ ގޮތަށް ބަދަލުކުރުމުގެ އުސޫލު އިތުރުކޮށް، ފުރަތަމަ ބެހެއްޓުން (ފުރަތަމަ އެއްޗަކަށް އެންމެ އިސްކަންދެނީ):
Rewrite to
ޑައިނަމިކް ހޮވައި your_bucketname
އިން concat("/file/your_bucketname",http.request.uri.path)
ތިބާގެ ބާކެޓް ނަމަށް ބަދަލުކުރުން.
މީގެ އިތުރުން މަތީގައިވާ cloudflare
ބަދަލުކުރުމުގެ އުސޫލުގައި index.html
file/your_bucketname/index.html
އަށް ބަދަލުކޮށް، އެހެން ކޮންފިގްރޭޝަންތައް ވެސް އެގޮތުގައި ހުރެއެވެ.