Βελτιστοποίηση Μηχανών Αναζήτησης (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
στην τιμή host:
σε .i18n/htm/main.yml
, πολλαπλές αποθήκες αντικειμένων μπορούν να διαμορφωθούν κάτω από 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
Επιλέξτε δυναμική ανακατεύθυνση, τροποποιήστε /en
στη διαδρομή ανακατεύθυνσης concat("/en",http.request.uri.path,".htm")
στην προεπιλεγμένη γλώσσα που θέλετε να συμπεριλάβουν οι μηχανές αναζήτησης.
Baidu Intelligent Cloud Configuration
Εάν χρειάζεται να παρέχετε υπηρεσίες στην ηπειρωτική Κίνα, μπορείτε να χρησιμοποιήσετε το Baidu Smart Cloud .
Τα δεδομένα μεταφορτώνονται στο Baidu Object Storage και συνδέονται στο δίκτυο διανομής περιεχομένου 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 παρέχει δωρεάν περιφερειακή ανάλυση, με την οποία η κυκλοφορία στην ηπειρωτική Κίνα μπορεί να περάσει μέσω του Baidu Smart Cloud και η διεθνής κίνηση μπορεί να περάσει από 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
και ενεργοποιήστε τον διακομιστή μεσολάβησης.
Τροποποίηση cloudflare
από SSL
→ λειτουργία κρυπτογράφησης, ορίστε στο Full
Προσθέστε τον κανόνα μετατροπής όπως φαίνεται παρακάτω, βάλτε τον πρώτο (ο πρώτος έχει τη χαμηλότερη προτεραιότητα):
Rewrite to
επιλέξτε δυναμική και τροποποιήστε your_bucketname
σε concat("/file/your_bucketname",http.request.uri.path)
στο όνομα του κάδου σας.
Επιπλέον, στον παραπάνω κανόνα μετατροπής cloudflare
, index.html
αλλάζει σε file/your_bucketname/index.html
και οι άλλες διαμορφώσεις παραμένουν οι ίδιες.