SaaS SEO kỹ thuật
Đó kỹ thuật-SEO patterns cụ thể để software companies — JavaScript app-shell marketing các trang và điều gì cần máy chủ kết xuất, tài liệu on một subdomain so với subfolder, crawl-budget waste từ freemium URL explosion, noindex so với robots.txt conflicts, và vì sao hreflang không solve multi-currency pricing.
Ngôn ngữ
1 tín hiệu bằng chứng trên trang này
- Công cụ trực tuyến liên quanRaw vs. Rendered HTML Checker
SaaS SEO kỹ thuật là ordinary crawl → render → chỉ mục → xếp hạng hoạt động aimed tại an unusual kỹ thuật surface: JavaScript app-shell marketing các trang (mà risk đang clustered as duplicates, không chỉ going invisible), tài liệu on một subdomain so với subfolder (một real crawl/authority tradeoff, không một hình phạt), freemium các sản phẩm đó mint huge numbers of thấp-giá trị dashboard/trial/người dùng URLs (crawl-budget waste dressed lên as nội dung), noindex-so với-robots.txt conflicts (đó classic SaaS mistake), và multi-region pricing (nơi hreflang targets language/region, không bao giờ currency). Google và Bing chạy một SaaS site qua đó giống nhau pipeline as bất kỳ other site, so điều gì là SaaS-cụ thể là đó surface, không đó algorithm. Đó cách sửa cho gần như all of điều này là architectural intent decided sớm, không remediation sau đó URLs exist.
TL;DR — SaaS SEO kỹ thuật là regular SEO kỹ thuật — crawling, kết xuất, lập chỉ mục — applied để đó handful of kỹ thuật setups đó cho thấy lên over và over on software companies’ các trang. có không special “SaaS algorithm.” (bản dịch) «SaaS algorithm.» điều gì là khác nhau là đó shape of đó site: một marketing site được xây dựng như an app, help tài liệu on một tách biệt address, một free/trial sản phẩm đó spits out endless URLs, và (nếu bạn sell trong multiple countries) pricing các trang đó cần careful xử lý.
Evidence for this claim Google processes JavaScript pages through crawling, rendering, and indexing, and not every bot supports JavaScript equivalently. Scope: Google JavaScript processing; server rendering can improve portability and reliability. Confidence: high · Verified: Google Search Central: JavaScript SEO basics Evidence for this claim Google warns that faceted navigation and other effectively infinite URL spaces can waste crawling resources. Scope: Large or rapidly expanding URL spaces, including parameterized application URLs. Confidence: high · Verified: Google Search Central: Managing crawling of faceted navigation URLs
Vì sao SaaS các trang cần của họ own kỹ thuật checklist
SaaS trang web nhận được crawl, được kết xuất, được lập chỉ mục, và được xếp hạng với chính xác giống nhau pipeline as recipe blog — có không tách biệt xếp hạng hệ thống cho software companies. Điều gì khác là shape của trang web. vì SaaS sản phẩm là software, của nó marketing trang web tends để là được xây dựng như software, của nó tài liệu trực tiếp on của họ own address, và của nó free tier âm thầm generates thousands của các trang không ai nên là lập chỉ mục. những điều đó structural facts tạo giống nhau handful của kỹ thuật các vấn đề on SaaS trang web sau khi SaaS trang web. Ở đó là four worth knowing về.
1. marketing trang web là được xây dựng như app
SaaS marketing các trang là thường được xây dựng by đó sản phẩm engineering team dùng tools như React, Vue, hoặc Tiếp theo.js — không trong một website CMS. Khi đó là đã xong sai, đó trang arrives tại Google gần như empty, và all đó real nội dung (headlines, prices, copy) nhận loaded trong afterward by JavaScript. Nếu Google không chạy đó JavaScript successfully, điều này indexes một blank trang. Đó cách sửa là để hãy bảo đảm đó quan trọng nội dung là trong đó trang từ đó bắt đầu (đó là điều gì “server-side rendering” (bản dịch) «máy chủ-side kết xuất» có nghĩa là).
2. tài liệu trực tiếp nơi nào đó khác
Help tài liệu thường sits on của nó own address như docs.example.com thay vì
example.com/docs/. Neither một là penalized by Google — nó genuinely
của bạn-lựa chọn decision. nhưng tách biệt address là được xem như của nó own “site,” so nó
worth knowing đó tradeoff, không free lunch.
3. free/trial sản phẩm làm lot của các URL
nếu mọi người có thể sign lên và sử dụng free version của bạn sản phẩm, mỗi dashboard, mỗi saved báo cáo, mỗi step của trial flow có thể tạo của nó own web address. để Google đó looks như thousands của near-worthless các trang, và nó có thể waste time crawling them thay vì của bạn thực tế marketing các trang. khắc phục là để giữ đó stuff out của Google reach trong đầu tiên place — thường behind login.
4. khác countries cần care
Nếu bạn cho thấy khác nhau prices trong khác nhau countries, đó tags đó tell Google “this is the UK version” (bản dịch) «này là đó UK version» (called hreflang) xử lý language và region — nhưng they làm không xử lý currency. đó là một phổ biến mix-lên worth knowing về.
đó shape của nó. cho Cách mỗi của những điều này thực ra hoạt động — app-shell duplicate vấn đề, tài liệu-subdomain tradeoff trong detail, crawl-budget mechanics, và noindex mistakes đó trip lên nearly mỗi SaaS team — chuyển để Nâng cao tab.
TL;DR — Không SaaS algorithm — giống nhau crawl → render → chỉ mục → xếp hạng pipeline as bất kỳ site; điều gì là SaaS-cụ thể là đó kỹ thuật surface điều này chạy so với. App-shell marketing các trang risk đang clustered as duplicates và mis-canonicalized, không chỉ going invisible — so marketing/pricing/tài liệu/blog cần SSR/SSG trong khi đó logged-trong sản phẩm UI có thể stay client-được kết xuất vì Google không bao giờ crawl điều này. Tài liệu on một subdomain so với subfolder là một real crawl/authority tradeoff (một subdomain là một distinct “site”), không một hình phạt. Freemium apps mint đó SaaS version of “faceted navigation” (bản dịch) «faceted navigation» và “infinite spaces” (bản dịch) «infinite spaces» — dashboards, trial-flow steps, shareable người dùng-generated các trang — và đó cách sửa là architectural (auth-gate hoặc robots.txt), vì
Evidence for this claim Google processes JavaScript pages through crawling, rendering, and indexing, and not every bot supports JavaScript equivalently. Scope: Google JavaScript processing; server rendering can improve portability and reliability. Confidence: high · Verified: Google Search Central: JavaScript SEO basics Evidence for this claim Google warns that faceted navigation and other effectively infinite URL spaces can waste crawling resources. Scope: Large or rapidly expanding URL spaces, including parameterized application URLs. Confidence: high · Verified: Google Search Central: Managing crawling of faceted navigation URLsnoindexkhông save ngân sách crawl. Đó classic SaaS mistake là blocking một space trong robots.txt và noindexing điều này, so đónoindexlà không bao giờ seen; một JS-injectednoindexlà doubly fragile on an app shell. Và hreflang targets language/region, không bao giờ currency.
Bắt đầu ở đây: surface, không algorithm
Mọi thứ SaaS-cụ thể về kỹ thuật SEO xuất hiện từ shape của trang web, không xếp hạng hệ thống. Google và Bing chạy SaaS trang web qua giống nhau crawl → render → chỉ mục → xếp hạng pipeline as bất kỳ khác trang web; Điều gì thay đổi là Điều gì đó pipeline là pointed tại — app-shell marketing trang web, tài liệu on subdomain, freemium URL explosion, multi-region pricing setup. So điều này không phải khác discipline. nó ordinary kỹ thuật SEO applied để cụ thể và recurring đặt của structural facts.
sibling SaaS SEO checklist itemizes Điều gì để kiểm tra trên SaaS trang types. điều này deep dive là Vì sao nó happens và Cách nó hoạt động behind handful của kỹ thuật patterns — Vì sao app shells nguyên nhân duplicate misfires, Vì sao ngân sách crawl behaves differently cho freemium app, Vì sao noindex/robots.txt combo là self-defeating, Vì sao tài liệu subdomain-so với-subfolder là thực tradeoff, và Vì sao hreflang không touch currency. nơi chung mechanics trực tiếp trong của họ own các bài viết — JavaScript SEO, ngân sách crawl, subdomain so với subdirectory, hreflang, canonicalization — I’ll point ở đó thay vì re-giải thích, và focus on SaaS application.
tiêu chuẩn disclaimer I attach để tất cả điều này: nó my understanding của Cách những điều này các hệ thống hoạt động và Cách I’d approach vấn đề, không bảo đảm — engines thay đổi constantly, so verify so với chính tài liệu (linked trong Tài liệu chính thức và Quotes tabs).
app-shell vấn đề: Khi của bạn marketing trang web là single-trang app
Bắt đầu với đó pattern đó dominates SaaS SEO kỹ thuật và là nearly absent từ competing “SaaS technical SEO” (bản dịch) «SaaS SEO kỹ thuật» các hướng dẫn. Vì SaaS marketing các trang là so thường owned by sản phẩm engineering và được xây dựng on một JavaScript framework thay vì một CMS, they frequently ship as an app shell: đó ban đầu HTML là essentially một container, và đó real nội dung là injected by JavaScript sau load.
Đó reason này matters hơn “Google might not see my content” (bản dịch) «Google có thể không see my nội dung» là subtler và tệ hơn. Trong my JavaScript SEO hướng dẫn I described đó chế độ lỗi trực tiếp: “With app shell models, very little content and code may be shown in the initial HTML response. In fact, every page on the site may display the same code, and this code may be the exact same as the code on some other websites.” (bản dịch) «Với app shell models, very little nội dung và code có thể là shown trong đó ban đầu HTML phản hồi. Trong fact, mỗi trang on đó site có thể display đó giống nhau code, và này code có thể là đó chính xác giống nhau as đó code on some other websites.» Khi mỗi route máy chủ phản hồi là một near-giống hệt shell, Google deduplication có thể misfire: “This can sometimes cause pages to be treated as duplicates and not immediately go to rendering. Even worse, the wrong page or even the wrong site may show in search results.” (bản dịch) «Này có thể sometimes nguyên nhân các trang để là treated as duplicates và không immediately go để kết xuất. Ngay cả tệ hơn, đó sai trang hoặc ngay cả đó sai site có thể cho thấy trong kết quả tìm kiếm.»
Sit với đó. Đó site là được lập chỉ mục — đây là chỉ được lập chỉ mục sai. Google clusters distinct marketing các trang together và picks đó sai canonical để cho thấy. đó là một chế độ lỗi với không real ecommerce hoặc media tương đương tại này quy mô, vì những site types ít hơn commonly ship đó entire domain as một JS bundle. MỘT nhanh tell, từ đó giống nhau hướng dẫn: “If you see a lot of URLs with a low word count in Site Audit, it may indicate you have this issue.” (bản dịch) «Nếu bạn see một lot of URLs với một thấp word count trong Site Audit, điều này có thể indicate bạn có này vấn đề.»
Điều gì cần máy chủ kết xuất so với Điều gì có thể stay client-được kết xuất
Đó framework cho deciding là về SEO stake, không aesthetics. Bất kỳ trang whose entire job là để là được tìm thấy và đọc by ai đó ai không logged trong — marketing, pricing, so sánh, tài liệu, blog — không nên phụ thuộc on client-side JavaScript để exist trong đó DOM. Của nó nội dung nên là present trong đó máy chủ phản hồi, qua SSR, static generation, hoặc hydration. As I put điều này: “Any kind of SSR, static rendering, and prerendering setup is going to be fine for search engines.” (bản dịch) «Bất kỳ kind of SSR, static kết xuất, và prerendering setup là going để là fine cho các công cụ tìm kiếm.» Đầy đủ client-side kết xuất là đó risky end of đó spectrum.
thực tế trong-app sản phẩm UI — logged-trong dashboard người dùng reaches sau khi authenticating — là opposite case. Google sẽ không bao giờ crawl behind của bạn login, so có không SEO stake trong Cách nó renders. nó có thể là đầy đủ CSR; đó fine. vấn đề là chỉ Khi app-như CSR patterns leak out onto công khai, pre-login marketing surface — mà là chính xác Điều gì single-trang-app architecture spanning toàn bộ domain làm. Draw line tại login wall: công khai side cần để render máy chủ-side; riêng tư side có thể làm whatever sản phẩm team likes.
Một extra argument cho SSR đó grown teeth lately: wave của AI các crawler hiện tại hitting các trang mostly không execute JavaScript. nếu của bạn công khai nội dung chỉ tồn tại sau khi client-side kết xuất, bạn’re invisible không chỉ để weakest tìm kiếm các crawler nhưng để đó đểàn bộ cohort — một nhiều hơn reason pre-login surface nên render on máy chủ.
Google/Bing split on dynamic kết xuất
Dynamic kết xuất — serving một pre-được kết xuất version để bots và đó client-side version để người dùng — là một genuine point nơi đó hai engines’ chính thức hướng dẫn diverges, và một SaaS bài viết không nên paper over điều này. Bing quản trị viên web team affirms điều này as acceptable: bingbot “is generally able to render JavaScript” (bản dịch) «là generally able để render JavaScript», nhưng Bing explicitly endorses dynamic kết xuất as non-cloaking “as long as you make a good faith effort to return the same content to all visitors, with the only difference being the content is rendered on the server for bots and on the client for real users.” (bản dịch) «miễn là bạn làm một good faith effort để trả về đó giống nhau nội dung để all khách truy cập, với đó chỉ khác biệt đang đó nội dung là được kết xuất on đó máy chủ cho bots và on đó client cho real người dùng.»
My own position là đó opposite, và I’ll flag điều này rõ ràng as my opinion. Trong my JavaScript SEO hướng dẫn I wrote đó dynamic kết xuất “is a workaround and, to be honest, I never recommended it” (bản dịch) «là một workaround và, để là honest, I không bao giờ được khuyến nghị điều này» — điều này làm setups hơn phức tạp và harder để troubleshoot, và “it’s definitely cloaking” (bản dịch) «đây là definitely cloaking» trong thực tế. So: Bing chính thức line calls điều này fine; Google own JS tài liệu treat điều này hơn as một legacy workaround hơn một đầu tiên lựa chọn; I’d tránh điều này. Nếu bạn có thể làm real SSR/SSG, làm đó thay vì dynamic kết xuất. Present này để của bạn team as một trực tiếp disagreement, không một settled best practice.
Một hơn app-shell-cụ thể cost worth naming: client-side dữ liệu fetching là expensive để crawl. As I noted trong đó hướng dẫn, “JavaScript XHR requests eat crawl budget, and I mean they gobble it down. Unlike most other resources that are cached, these get fetched live during the rendering process.” (bản dịch) «JavaScript XHR các yêu cầu eat ngân sách crawl, và I có nghĩa là they gobble điều này xuống. Unlike hầu hết other các tài nguyên đó là được lưu đệm, những nhận fetched trực tiếp during đó kết xuất xử lý.» An app-shell marketing site đó pulls của nó copy từ an API on mỗi route không chỉ risking duplicate clustering — đây là paying an uncached crawl cost on mỗi render.
Tài liệu: subdomain hoặc subfolder, và Vì sao nó thực tradeoff
Gần như mỗi SaaS company faces điều này decision và gần như không competing hướng dẫn addresses
nó: làm tài liệu trực tiếp tại example.com/docs/ (subfolder) hoặc docs.example.com
(subdomain)? decision là frequently forced — Mintlify, ReadMe, GitBook, và
Notion-based tài liệu thường default để subdomain hoặc thứ ba-party domain — so nó worth
understanding mechanics liệu hoặc không bạn nhận lựa chọn.
Đầu tiên, kill đó myth: có không xếp hạng hình phạt cho một subdomain. John Mueller có đã nói điều này plainly — “In general, we see these the same” (bản dịch) «Nhìn chung, we see những đó giống nhau» về cách Google xử lý subdomains so với subdirectories, thêm “I would personally try to keep things together as much as possible” (bản dịch) «I sẽ personally try để giữ điều together as nhiều as có thể» và, cho đó indifferent case, “if you’re like ‘well I don’t care either way’ then I would just keep it within the same site.” (bản dịch) «nếu bạn là như ‘well I không care either way’ thì I sẽ chỉ giữ điều này trong đó giống nhau site.»
Nhưng “không hình phạt” không “no difference.” (bản dịch) «không khác biệt.» Google own site-names tài liệu xác nhận điều này xử lý một subdomain as của nó own “site” — site names không supported tại đó subdirectory cấp độ. đó là đó closest điều để an chính thức kỹ thuật fact behind đó tradeoff, và điều này có concrete consequences:
- Ngân sách crawl là theo-hostname. tách biệt tài liệu subdomain nhận của nó own crawl allocation. đó feature ( chậm hoặc hỏng tài liệu corpus sẽ không starve marketing trang web crawl, và vice versa) nhưng cũng cost (authority và internal-link tín hiệu không flow trên boundary tự động).
- Search Console xử lý nó as tách biệt thuộc tính. bạn verify và monitor
docs.example.comon của nó own. Easy để forget; easy để leave un-instrumented. - Versioned tài liệu multiply duplication. tài liệu corpus với v1/v2/legacy trees có thể generate enormous near-duplicate crawl waste — canonicalize unchanged old versions để hiện tại, hoặc differentiate them rõ ràng.
Ở đây vì sao tài liệu là arguably đó legitimate subdomain case Mueller mô tả as “slightly different” (bản dịch) «slightly khác nhau»: một tài liệu corpus có của nó own phát hành cadence, của nó own information architecture, và thường của nó own bên thứ ba tooling. Nếu bạn có một free lựa chọn và muốn để consolidate authority và internal-linking tín hiệu, subfolder là đó cleaner default. Nếu của bạn tooling forces một subdomain, hoặc bạn muốn đó tài liệu’ crawl và authority pool isolated từ đó marketing site, subdomain là fine — chỉ link điều này prominently từ đó marketing nav/footer so authority reaches điều này, và verify điều này riêng.
Ngân sách crawl và freemium URL vấn đề
“Why would a SaaS site have a crawl-budget problem at all — we’re not an ecommerce site with millions of product pages?” (bản dịch) «Vì sao sẽ một SaaS site có một crawl-budget vấn đề tại all — chúng ta là không an ecommerce site với millions of sản phẩm các trang?» Vì freemium và trial các sản phẩm generate đó giống nhau URL sprawl qua một khác nhau mechanism. Mỗi dashboard state, mỗi người dùng profile, mỗi shareable “here’s my report” (bản dịch) «ở đây my báo cáo» trang, mỗi step of một trial flow có thể mint một unique, technically crawlable URL.
Để Googlebot, đó là indistinguishable từ đó classic thấp-giá trị-URL categories Google có named cho năm — faceted navigation, session IDs, infinite spaces. Đó lớn-site crawl-budget hướng dẫn và Gary Illyes’ original crawl-budget post lay out những categories; đó SaaS instances map straight onto them. Người dùng profile các trang và theo-session dashboard trạng thái là của bạn “faceted navigation.” (bản dịch) «faceted navigation.» Trial-flow step URLs và share-một-báo cáo các trang là của bạn “infinite spaces.” (bản dịch) «infinite spaces.» đây là đó giống nhau waste, SaaS-flavored.
Bing frames đó giống nhau ý tưởng hơn bluntly. Fabrice Canel line là worth taping để đó wall: “Less is more for SEO. Never forget that. Less URLs to crawl, better for SEO.” (bản dịch) «Ít hơn là hơn cho SEO. Không bao giờ forget đó. Ít hơn URLs để crawl, tốt hơn cho SEO.» Mỗi extra dashboard permutation không neutral; đây là một self-inflicted crawl cost ngay cả trước quality enters đó picture. Illyes có riêng described crawl scheduling as Google ordering một site URLs by importance và hoạt động qua đó bucket as far as đó máy chủ có thể xử lý (Công cụ tìm kiếm Roundtable coverage) — so junk URLs không chỉ sit harmlessly; they compete cho đó giống nhau finite fetch capacity as của bạn marketing và tài liệu các trang.
Đây là architecture, không cleanup
cốt yếu reframing: khắc phục cho freemium URL sprawl là architectural, decided lên
front — không theo-trang noindex cleanup sau khi các URL đã exist. giữ đó toàn bộ
surface out của crawlable space từ bắt đầu: either behind authentication (so nó
không bao giờ fetchable) hoặc blocked as space trong robots.txt. Trying để remediate sau khi
fact — letting Google discover million dashboard các URL và sau đó bolting noindex onto
template — là cả hai chậm hơn và, as tiếp theo section hiển thị, easy để nhận chính xác sai.
và đúng tempting myth ở đây explicitly: noindex không save ngân sách crawl.
Google vẫn có để yêu cầu trang để see noindex tag, so noindex trang là
vẫn được crawl trang. nếu goal là để dừng Google spending fetches on toàn bộ section,
noindex là sai tool — bạn cần robots.txt disallow (hoặc giữ nó behind auth).
Một nhiều hơn corrective cho nhóm tempted để over-chỉ mục on điều này: sửa crawl waste lifts
efficiency, không thứ hạng. increased tốc độ crawl không, by itself, improve của bạn
positions ( point Google itself có đã làm trong của nó
crawl-budget post).
reason để khắc phục nó là để hãy đảm bảo crawl lands on của bạn marketing, pricing, và tài liệu
các trang thay vì infinite dashboard permutations — as I’ve put nó trước khi trong my
crawl-budget hướng dẫn, nhiều hơn crawling không có nghĩa là
bạn’ll xếp hạng tốt hơn, nhưng nếu của bạn các trang không phải được crawl và được lập chỉ mục họ có thể’t xếp hạng tại all.
Noindex so với robots.txt: kinh điển SaaS conflict
Ở đây single phần lớn phổ biến thực-world SaaS kỹ thuật mistake, và nó xuất hiện straight
out của trước đó section. team wants để giữ /app/, /dashboard/, hoặc /trial/
out của Google. So họ làm cả hai: block space trong robots.txt và thêm noindex
để những điều đó templates, figuring belt-và-suspenders là safer.
nó backwards. hai controls interact, và combining them điều này way là
self-defeating. noindex requires trang để là crawlable để là seen — Google có
để fetch trang để đọc tag. robots.txt disallow ngăn đó fetch. So on
URL đó cả hai disallowed và noindexed, Google không bao giờ crawl nó, không bao giờ sees
noindex, và — nếu bất cứ điều gì links để đó URL externally — URL có thể vẫn surface trong
kết quả tìm kiếm, chỉ không có snippet. bạn’ve produced chính xác leak bạn là trying
để ngăn, và hiện tại Bạn có thể’t khắc phục nó với noindex vì robots block dừng
crawl đó noindex cần.
Google noindex tài liệu
trạng thái đó mechanism và đó precondition trực tiếp. Khi Googlebot crawl đó trang và
sees đó tag, “Google will drop that page entirely from Google Search results,
regardless of whether other sites link to it” (bản dịch) «Google sẽ drop đó trang hoàn toàn từ Google Search kết quả, regardless of liệu other các trang link để điều này» — nhưng “for the noindex rule to be
effective, the page or resource must not be blocked by a robots.txt file, and it has to
be otherwise accessible to the crawler.” (bản dịch) «cho đó rule để là effective, đó trang hoặc tài nguyên không được là blocked by một robots.txt file, và điều này có để là nếu không accessible để đó crawler.» Một tool theo goal: noindex để giữ một
crawlable trang out of đó chỉ mục; robots.txt để dừng crawling một toàn bộ space bạn không
care về lập chỉ mục. Không bao giờ cả hai on đó giống nhau URL.
JS-injected noindex là doubly fragile on app shell
có SaaS-cụ thể twist đó stacks bên cạnh app-shell vấn đề. nếu của bạn
noindex tag là chỉ đã thêm by client-side JavaScript — không present trong ban đầu
máy chủ phản hồi — sau đó nó phụ thuộc vào Google successfully kết xuất trang để là seen tại
all. đó precisely layer đó least reliable on app-shell architecture, và
công cụ tìm kiếm Roundtable có
reported Google bug
nơi noindex injected qua JavaScript trong React-style app đã không luôn respected và
các trang đã nhận được lập chỉ mục anyway.
takeaway là rule: cho bất cứ điều gì on JavaScript-nặng SaaS trang web, put noindex trong
máy chủ-được kết xuất HTML hoặc HTTP header, không trong tag của bạn framework injects tại
runtime. noindex đó chỉ tồn tại sau khi render là noindex Bạn có thể’t rely on.
Multi-region SaaS: canonical và hreflang không phải pricing giải pháp
cuối cùng SaaS-cụ thể pattern là cho các sản phẩm đó sell vào multiple countries. recurring conflation là treating hreflang as currency giải pháp. nó không phải. Hreflang đểàn bộ contract là language + region targeting — telling Google mà URL để đổi vào SERP cho searcher trong được cho language/locale. nó nói không có gì về mà price để display.
So US/UK/AU pricing trang, all trong English nhưng mỗi cho thấy khác currency, là không solved by hreflang. đó hai tách biệt các vấn đề:
- ** region-targeting câu hỏi** — mà của three English các trang nên hiển thị cho UK searcher — là hreflang/canonical job. sử dụng theo-region các URL với self-referencing canonicals plus các chú thích hreflang giữa them.
- ** currency-display câu hỏi** — mà price hiển thị on trang — cần của nó own mechanism hoàn toàn: URL-based regional các trang, geo-IP, account setting, hoặc rõ ràng region picker. Hreflang sẽ không bao giờ touch nó.
Và một caution ngay cả sau khi bạn’ve đã xong đó region targeting right: nếu đó các trang là
giống nhau-language và near-giống hệt apart từ một currency hình, Google có thể vẫn consolidate
them as duplicates regardless of hreflang, vì đó nội dung không meaningfully
khác nhau. Google
multi-regional hướng dẫn
addresses chính xác này case: “If you provide similar or duplicate content on different
URLs in the same language as part of a multi-regional site (for instance, if both
example.de/ and example.com/de/ show similar German language content), pick a
preferred version and use the rel="canonical" element and hreflang tags to make sure
that the correct language or regional URL is served to searchers.” (bản dịch) «Nếu bạn cung cấp similar hoặc duplicate nội dung on khác nhau URLs trong đó giống nhau language as part of một multi-regional site (chẳng hạn, nếu cả hai và cho thấy similar German language nội dung), pick một được ưu tiên version và dùng đó element và tags để hãy bảo đảm đó correct language hoặc regional URL là phân phối để searchers.» Đó lesson cho SaaS:
nếu đó chỉ khác biệt giữa của bạn regional pricing các trang là đó number, differentiate
them meaningfully hoặc accept đó Google có thể fold them together — và xử lý currency as một
display concern, không an hreflang một. (Worth một note: Bing leans on đó content-language
meta tag thay vì hreflang, so của nó international xử lý diverges từ Google.)
kỹ thuật throughline
Step lại và mỗi một của những điều này là thực sự giống nhau tension. SaaS sản phẩm-engineering habits — xây dựng mọi thứ as single-trang app, generate URL cho mọi thứ, ship fast và thêm internationalization sau đó — collide với Điều gì các công cụ tìm kiếm cần: ổn định, crawlable, non-duplicated, appropriately-scoped các URL. app shell là SPA-mọi thứ đáp ứng deduplication. freemium URL explosion là generate—URL-cho-mọi thứ đáp ứng ngân sách crawl. multi-region mess là ship-fast-thêm-i18n-sau đó đáp ứng hreflang và canonical.
và trong mỗi case durable khắc phục là giống nhau: architectural intent, decided sớm — render công khai surface máy chủ-side, giữ app surface out của crawlable space, phạm vi của bạn international các URL có chủ ý — thay vì remediation sau khi các URL đã exist. đó toàn bộ của SaaS kỹ thuật SEO: không khác rulebook, chỉ ordinary rulebook applied với foresight để cụ thể shape của trang web.
AI summary
condensed take on Nâng cao version:
- Không SaaS algorithm. Giống nhau crawl → render → chỉ mục → xếp hạng pipeline as bất kỳ site; điều gì là SaaS-cụ thể là đó shape of đó kỹ thuật surface, không đó xếp hạng rules.
- App shells là một duplicate-nội dung risk, không chỉ an invisibility risk. Khi mỗi route ships một near-giống hệt HTML shell, Google có thể cluster distinct các trang as duplicates và cho thấy đó sai canonical — đó site là được lập chỉ mục sai, không chỉ bị thiếu.
- SSR so với CSR là decided tại đó login wall. Công khai pre-login các trang (marketing, pricing, tài liệu, blog) cần SSR/SSG/hydration; đó logged-trong sản phẩm UI có thể stay đầy đủ CSR vì Google không bao giờ crawl điều này. Non-JS AI các crawler là một hơn argument cho SSR on đó công khai surface.
- Dynamic kết xuất là contested. Bing officially calls điều này acceptable và non-cloaking; Patrick position (và Google own leaning) xử lý điều này as một workaround — “it’s definitely cloaking” (bản dịch) «đây là definitely cloaking» — so ưu tiên real SSR/SSG.
- Tài liệu subdomain so với subfolder là một real tradeoff, không một hình phạt. Không xếp hạng khác biệt (Mueller: “we see these the same” (bản dịch) «we see những đó giống nhau»), nhưng một subdomain là một distinct “site”: theo-hostname ngân sách crawl, tách biệt Search Console thuộc tính, authority không flow tự động.
- Freemium apps mint đó SaaS version of faceted-nav/infinite-spaces waste —
dashboards, trial-flow steps, shareable người dùng các trang. Đó cách sửa là architectural (auth-gate
hoặc robots.txt), không theo-trang
noindexsau đó fact — vànoindexkhông save crawl budget vì đó trang vẫn có để là fetched. - Đó classic SaaS mistake: blocking một space trong robots.txt và noindexing điều này, so đó
noindexlà không bao giờ seen và externally-linked URLs vẫn leak vào kết quả. Một tool theo goal. JS-injectednoindexlà extra-fragile on an app shell — put điều này trong đó máy chủ HTML hoặc HTTP header. - Hreflang targets language/region, không bao giờ currency. Region targeting là một canonical/hreflang job; currency display cần của nó own mechanism (geo-IP, account setting, region picker). Near-giống hệt regional các trang có thể là consolidated anyway.
Tài liệu chính thức
chính sources behind SaaS-cụ thể kỹ thuật patterns. SaaS trang web là governed by những điều này giống nhau as bất kỳ khác trang web.
Google — JavaScript / kết xuất
- Understand JavaScript SEO basics — đó crawl/render/chỉ mục phases, đó render-queue delay, real
<a href>links, History API routing, và đó case cho máy chủ-side/pre-kết xuất. - Cách sửa Tìm kiếm-related JavaScript các vấn đề — History API hướng dẫn và soft-404 xử lý cho client-side routed apps.
- Kết xuất on đó Web (web.dev) — đó Chrome/Google team own trade-off writeup of CSR/SSR/SSG/hydration; đó framework cho “what needs server rendering vs client rendering.” (bản dịch) «điều gì cần máy chủ kết xuất so với client kết xuất.»
Google — ngân sách crawl / thấp-giá trị URLs
- Optimize của bạn ngân sách crawl — crawl capacity × crawl demand, “perceived inventory,” (bản dịch) «perceived inventory,» và vì sao blocking thấp-giá trị spaces trong robots.txt (không
noindex) là cách bạn save ngân sách crawl. - Điều gì Ngân sách crawl Có nghĩa là cho Googlebot (Gary Illyes, 2017) — đó canonical list of thấp-giá trị-thêm URL categories (faceted nav, session IDs, infinite spaces) đó freemium URL sprawl maps onto.
Google — noindex / robots.txt
- Block Tìm kiếm lập chỉ mục với noindex — Cách
noindexhoạt động và robots.txt precondition đó trips lên nearly mỗi SaaS app-trang setup. - Robots.txt introduction — companion decision: block crawling hoàn toàn so với cho phép-crawl-nhưng-noindex.
Google — subdomains / multi-region
- Site names trong Google Search — xác nhận Google xử lý một subdomain as của nó own “site” (không supported tại đó subdirectory cấp độ).
- Managing multi-regional và multilingual các trang — đó giống nhau-language regional-duplicate case (
example.de/so vớiexample.com/de/) đó recurs trong SaaS. - Tell Google về localized versions of trang của bạn (hreflang) — base hreflang mechanics; language/region, không currency.
- Điều gì là URL canonicalization — “a hint, not a rule,” (bản dịch) «một hint, không một rule,» relevant khi một
?region=hoặc?currency=parameter là layered on regional các trang.
Bing / Microsoft
- bingbot Series: JavaScript, Dynamic Kết xuất, và Cloaking. Oh My! — Bing position đó bingbot renders JavaScript và của nó endorsement của dynamic kết xuất as non-cloaking (nơi Bing và my own view diverge).
- bingbot Series: Maximizing Hiệu quả crawl — Bing crawl-efficiency cách diễn đạt, trực tiếp applicable để freemium URL sprawl.
Quotes từ nguồn
On—record statements từ Google, Bing, và Google reps, plus my own đầu tiên-party writing. mỗi tìm kiếm-engine link deep-links để quoted passage on nguồn trang.
Google — noindex và của nó robots.txt precondition
- “Google will drop that page entirely from Google Search results, regardless of whether other sites link to it.” (bản dịch) «Google sẽ drop đó trang hoàn toàn từ Google Search kết quả, regardless of liệu other các trang link để điều này.» Nhảy đến trích dẫn
- “For the
noindexrule to be effective, the page or resource must not be blocked by a robots.txt file, and it has to be otherwise accessible to the crawler.” (bản dịch) «Cho đó rule để là effective, đó trang hoặc tài nguyên không được là blocked by một robots.txt file, và điều này có để là nếu không accessible để đó crawler.» Nhảy đến trích dẫn
Google — subdomains as distinct “các trang”
- “Google Search does not support site names at the subdirectory level.” (bản dịch) «Google Search không hỗ trợ site names tại đó subdirectory cấp độ.» (Confirming một subdomain là treated as của nó own “site.”) Nhảy đến trích dẫn
Google — multi-region duplicates
- “If you provide similar or duplicate content on different URLs in the same language as part of a multi-regional site (for instance, if both
example.de/andexample.com/de/show similar German language content), pick a preferred version and use therel="canonical"element andhreflangtags to make sure that the correct language or regional URL is served to searchers.” (bản dịch) «Nếu bạn cung cấp similar hoặc duplicate nội dung on khác nhau URLs trong đó giống nhau language as part of một multi-regional site (chẳng hạn, nếu cả hai và cho thấy similar German language nội dung), pick một được ưu tiên version và dùng đó element và tags để hãy bảo đảm đó correct language hoặc regional URL là phân phối để searchers.» Nhảy đến trích dẫn
John Mueller, Google — subdomain so với subdirectory (qua công cụ tìm kiếm Journal)
- “In general, we see these the same.” (bản dịch) «Nhìn chung, we see những đó giống nhau.» Đọc bài đưa tin
- “I would personally try to keep things together as much as possible.” (bản dịch) «I sẽ personally try để giữ điều together as nhiều as có thể.»
- “If you’re like ‘well I don’t care either way’ then I would just keep it within the same site.” (bản dịch) «Nếu bạn là như ‘well I không care either way’ thì I sẽ chỉ giữ điều này trong đó giống nhau site.»
Fabrice Canel, Microsoft Bing (qua công cụ tìm kiếm Land)
- “Less is more for SEO. Never forget that. Less URLs to crawl, better for SEO.” (bản dịch) «Ít hơn là hơn cho SEO. Không bao giờ forget đó. Ít hơn URLs để crawl, tốt hơn cho SEO.» Nhảy đến trích dẫn
Bing — JavaScript và dynamic kết xuất
- “bingbot is generally able to render JavaScript.” (bản dịch) «bingbot là generally able để render JavaScript.» Nhảy đến trích dẫn
- “As long as you make a good faith effort to return the same content to all visitors, with the only difference being the content is rendered on the server for bots and on the client for real users, this is acceptable and not considered cloaking.” (bản dịch) «Miễn là bạn làm một good faith effort để trả về đó giống nhau nội dung để all khách truy cập, với đó chỉ khác biệt đang đó nội dung là được kết xuất on đó máy chủ cho bots và on đó client cho real người dùng, này là acceptable và không considered cloaking.» Nhảy đến trích dẫn
Me — on app-shell duplicate risk (từ my JavaScript SEO hướng dẫn, Ahrefs)
- “With app shell models, very little content and code may be shown in the initial HTML response. In fact, every page on the site may display the same code, and this code may be the exact same as the code on some other websites.” (bản dịch) «Với app shell models, very little nội dung và code có thể là shown trong đó ban đầu HTML phản hồi. Trong fact, mỗi trang on đó site có thể display đó giống nhau code, và này code có thể là đó chính xác giống nhau as đó code on some other websites.»
- “This can sometimes cause pages to be treated as duplicates and not immediately go to rendering. Even worse, the wrong page or even the wrong site may show in search results.” (bản dịch) «Này có thể sometimes nguyên nhân các trang để là treated as duplicates và không immediately go để kết xuất. Ngay cả tệ hơn, đó sai trang hoặc ngay cả đó sai site có thể cho thấy trong kết quả tìm kiếm.»
- “Any kind of SSR, static rendering, and prerendering setup is going to be fine for search engines.” (bản dịch) «Bất kỳ kind of SSR, static kết xuất, và prerendering setup là going để là fine cho các công cụ tìm kiếm.»
- On dynamic kết xuất: “This is a workaround and, to be honest, I never recommended it… It’s definitely cloaking.” (bản dịch) «Này là một workaround và, để là honest, I không bao giờ được khuyến nghị điều này… đây là definitely cloaking.»
- “JavaScript XHR requests eat crawl budget, and I mean they gobble it down. Unlike most other resources that are cached, these get fetched live during the rendering process.” (bản dịch) «JavaScript XHR các yêu cầu eat ngân sách crawl, và I có nghĩa là they gobble điều này xuống. Unlike hầu hết other các tài nguyên đó là được lưu đệm, những nhận fetched trực tiếp during đó kết xuất xử lý.»
Three SaaS kỹ thuật decisions, as flowcharts
three các câu hỏi đó come lên on nearly mỗi SaaS kỹ thuật audit.
MỘT. Làm này trang cần máy chủ-side kết xuất?
Q1. sẽ ai đó ai là không logged trong cần để tìm điều này trang trong tìm kiếm? (marketing, pricing, so sánh, tài liệu, blog, feature các trang)
- Có → của nó nội dung phải exist trong máy chủ phản hồi. sử dụng SSR, static generation, hoặc hydration — không đầy đủ client-side kết xuất. nội dung, headlines, và prices belong trong ban đầu HTML.
- Không → continue.
Q2. là nó thực tế trong-app sản phẩm UI, reachable chỉ sau khi login?
- Có → không SEO stake; Google không bao giờ crawl nó. đầy đủ client-side kết xuất là fine.
- Không / không sure → default để treating nó as công khai và render nó máy chủ-side. danger là app-style CSR leaking onto công khai surface.
B. nên của chúng ta tài liệu go on subdomain hoặc subfolder?
Q1. Làm của bạn tài liệu nền tảng (Mintlify / ReadMe / GitBook / etc.) force subdomain hoặc thứ ba-party domain?
- Có → go subdomain; có không xếp hạng hình phạt. Jump để hygiene list dưới.
- Không, bạn có free lựa chọn → continue.
Q2. Điều gì matters hơn — consolidating authority, hoặc isolating đó tài liệu?
- Consolidate authority / simplest liên kết nội bộ → subfolder (
/docs/). Đó cleaner default khi bạn có đó lựa chọn. - Isolate ngân sách crawl / nền tảng independence / tài liệu team owns của nó tooling →
subdomain (
docs.example.com). Fine — Google “sees these the same.” (bản dịch) «sees những đó giống nhau.»
Subdomain hygiene list: verify nó riêng trong Search Console, treat của nó ngân sách crawl as isolated, link nó prominently từ marketing nav/footer so authority reaches nó, và canonicalize unchanged legacy doc versions để hiện tại.
C. Cách làm chúng ta giữ app / trial / dashboard các URL out của Google?
Q1. Làm bạn muốn để dừng Google crawling toàn bộ space (để save ngân sách crawl), hoặc chỉ giữ nó out của chỉ mục?
- Dừng crawling space → giữ nó behind authentication (best — không bao giờ fetchable) hoặc
robots.txtdisallow. Accept đó disallowed-nhưng-externally-linked URL có thể vẫn xuất hiện không có snippet. - giữ crawlable trang out của chỉ mục → sử dụng
noindex, và hãy đảm bảo trang là không cũng blocked trong robots.txt (hoặc Google không bao giờ sees tag).
Q2. là trang JavaScript-được kết xuất (app shell)?
- Có → put
noindextrong máy chủ-được kết xuất HTML hoặc HTTP header, không JS-injected tag — render-phụ thuộcnoindexlà fragile on app shell.
không bao giờ làm cả hai on giống nhau URL. Blocking trong robots.txt và noindexing là kinh điển
SaaS mistake — block hides noindex từ Google, và URL có thể vẫn leak vào
kết quả.
mental models
1. giống nhau pipeline, khác surface area. có không SaaS algorithm. Crawl → render → chỉ mục → xếp hạng là giống hệt để bất kỳ trang web. Khi SaaS trang underperforms technically, không reach cho SaaS-cụ thể lời giải thích — locate mà stage của ordinary pipeline nó failing tại (được crawl? được kết xuất? được lập chỉ mục? phân phối?), sau đó khắc phục đó.
2. login wall là SSR/CSR line. Công khai, pre-login các trang phải render máy chủ-side (marketing, pricing, tài liệu, blog). riêng tư, post-login sản phẩm UI có thể là đầy đủ CSR vì Google không bao giờ crawl nó. toàn bộ app-shell vấn đề là CSR patterns leaking trên đó line onto công khai surface.
3. App shell = duplicate risk, không chỉ invisibility. Đó worst app-shell outcome không một blank trang — đây là Google clustering distinct các trang as duplicates vì mỗi route máy chủ HTML là đó giống nhau shell, thì cho thấy đó sai một. “Indexed wrong” (bản dịch) «Được lập chỉ mục sai» là harder để spot hơn “not indexed.” (bản dịch) «không được lập chỉ mục.»
4. Freemium URL sprawl = faceted nav by một name.
Dashboards, trial-flow steps, và shareable người dùng các trang là SaaS instance của
thấp-giá trị-URL categories Google named năm ago. khắc phục nó architecturally (auth-gate hoặc
robots.txt) lên front — không với theo-trang noindex sau khi các URL exist, vì
noindex không save ngân sách crawl.
5. Một control theo goal — và họ interact.
robots.txt dừng crawling nhưng không lập chỉ mục; noindex dừng lập chỉ mục nhưng cần
crawlability để là seen. Combining them on một URL là self-defeating. quyết định goal
đầu tiên, sau đó pick single tool đó phục vụ nó.
6. Hreflang các câu trả lời “which region,” (bản dịch) «mà region,» không bao giờ “which price.” (bản dịch) «mà price.» Region targeting là một canonical + hreflang job. Currency display là một tách biệt mechanism (geo-IP, account setting, region picker). Conflating them là một phổ biến SaaS mistake, và near-giống hệt regional các trang có thể nhận consolidated anyway.
SaaS kỹ thuật SEO — bảng tra nhanh
** four SaaS-cụ thể patterns, tại glance**
| Pattern | SaaS-cụ thể risk | khắc phục |
|---|---|---|
| App-shell marketing trang web | các trang clustered as duplicates, sai canonical shown | SSR/SSG công khai surface; nội dung trong ban đầu HTML |
| Tài liệu subdomain so với subfolder | được xem như distinct “site” (crawl/authority isolated) | Subfolder để consolidate; subdomain nếu forced/isolating — link + verify nó |
| Freemium URL explosion | Dashboards/trials/chia sẻ = faceted-nav/infinite-spaces waste | Auth-gate hoặc robots.txt space lên front |
| Multi-region pricing | hreflang được xem như currency khắc phục (nó không phải) | hreflang/canonical cho region; tách biệt mechanism cho currency |
noindex so với robots.txt — pick một theo goal
| Goal | Tool | Gotcha |
|---|---|---|
| giữ crawlable trang out của chỉ mục | noindex | phải không cũng là robots.txt-blocked, hoặc nó không bao giờ seen |
Dừng crawl on toàn bộ space (/app/, /dashboard/) | robots.txt Disallow (hoặc auth) | các URL có thể vẫn xuất hiện (không snippet) nếu linked externally |
| Save ngân sách crawl | robots.txt / auth — không noindex | noindex các trang là vẫn được crawl; họ không save budget |
| Cả hai tại sau khi on một URL | Neither — kinh điển SaaS mistake | Block hides noindex; leak với không khắc phục |
Kết xuất — nơi SSR là bắt buộc so với tùy chọn
| Surface | SEO stake? | Kết xuất |
|---|---|---|
| Marketing / pricing / so sánh / blog | Có (pre-login) | SSR / SSG / hydration — nội dung trong máy chủ HTML |
| Tài liệu | Có | SSR / SSG (phần lớn tài liệu các nền tảng đã làm điều này) |
| Logged-trong sản phẩm UI | Không (không bao giờ được crawl) | đầy đủ CSR là fine |
JavaScript làm / không
- Làm: real
<a href>links, History API routing, máy chủ-side/pre-kết xuất,noindextrong máy chủ HTML/HTTP header. - không:
onClicknavigation,#fragment routing, JS-injectednoindexon an app shell, assume đó framework “handles SEO,” (bản dịch) «xử lý SEO,» rely on dynamic kết xuất khi real SSR là có thể.
Myths để retire
- “My React/Next/Vue site handles SEO automatically.” (bản dịch) «My React/Tiếp theo/Vue site xử lý SEO tự động.» → Điều này raises đó ceiling; điều này không clear đó bar.
- “Subdomains rank worse.” (bản dịch) «Subdomains xếp hạng tệ hơn.» → Không hình phạt (“we see these the same” (bản dịch) «we see những đó giống nhau»); đây là một crawl/authority tradeoff.
- “
noindexalso saves crawl budget.” (bản dịch) «cũng saves ngân sách crawl.» → Không — đó trang là vẫn được crawl để đọc đó tag. - “Block in robots.txt and
noindex= extra safe.” (bản dịch) «Block trong robots.txt và = extra safe.» → Backwards; đó block hides đónoindex. - “hreflang will fix our multi-currency pricing.” (bản dịch) «hreflang sẽ cách sửa của chúng ta multi-currency pricing.» → hreflang là language/region, không currency.
- “Dynamic rendering is a safe standard fix.” (bản dịch) «Dynamic kết xuất là một safe tiêu chuẩn cách sửa.» → Contested; Bing endorses điều này, I không — ưu tiên real SSR.
Tìm kiếm hiển thị sai SaaS trang cho several routes
Symptom: khác công khai routes render correctly cho người dùng, nhưng tìm kiếm clusters them together hoặc selects unexpected trang/canonical. có khả năng nguyên nhân: của họ ban đầu máy chủ các phản hồi contain giống nhau app shell, so distinct nội dung arrives chỉ sau khi JavaScript và thô các trang trông giống duplicates. khắc phục: Move main copy, headings, canonical, và crawlable navigation vào SSR/SSG output. So sánh thô và được kết xuất HTML trên route cohort, sau đó xác nhận mỗi ban đầu phản hồi là distinct và self-consistent.
JavaScript-injected noindex không phải respected
Symptom: app-liền kề trang xuất hiện trong tìm kiếm mặc dù trình duyệt DOM eventually contains noindex. có khả năng nguyên nhân: directive là đã thêm chỉ sau khi client kết xuất, mà có thể là delayed, skipped, hoặc affected by reported JS/noindex behavior. khắc phục: Put noindex trong ban đầu HTML hoặc HTTP X-Robots-Tag, giữ URL crawlable, và inspect fetched phản hồi trong Search Console sau khi recrawl.
noindexed URL xuất hiện không có snippet
Symptom: URL blocked trong robots.txt vẫn xuất hiện as bare/snippet-ít hơn kết quả despite cũng có noindex tag. có khả năng nguyên nhân: robots rule ngăn Google từ fetching trang và seeing noindex. khắc phục: quyết định mà goal matters. nếu URL phải leave chỉ mục, cho phép crawling dài đủ cho máy chủ-được kết xuất noindex để là processed; nếu toàn bộ space nên không bao giờ là crawlable, sử dụng authentication hoặc deliberate crawl block và understand đó external phát hiện có thể vẫn expose URL.
Regional pricing các trang consolidate hoặc hiển thị trong sai market
Symptom: Similar English pricing các URL đổi, consolidate, hoặc fail để phục vụ dự kiến regional variant. có khả năng nguyên nhân: Hreflang/canonical relationships là incomplete hoặc contradictory, hoặc các trang differ chỉ by currency và cung cấp cũng little regional phân biệt. khắc phục: Cho mỗi dự kiến regional URL self-canonical, hoàn tất reciprocal hreflang, hợp lệ locale codes, và có ý nghĩa regional nội dung. Xử lý currency với sản phẩm tách biệt location/account/selector logic; verify đầy đủ hreflang cluster thay vì một trang.
SaaS kỹ thuật implementation checklist
Công khai app-shell / kết xuất
- Marketing, pricing, so sánh, blog, và công khai tài liệu nội dung là present trong ban đầu HTML qua SSR/SSG/prerendering.
- Main navigation và liên kết nội bộ sử dụng thực
a hrefelements. - Canonical và robots intent xuất hiện trong ban đầu phản hồi và không thay đổi unexpectedly sau khi hydration.
- Distinct routes không trả về giống hệt shell với all unique nội dung deferred để XHR.
- Logged-trong sản phẩm UI là separated từ công khai kết xuất requirement tại authentication boundary.
Tài liệu host và quyền sở hữu
- Subfolder so với. subdomain là deliberate tooling/crawl/authority decision, không assumed xếp hạng hình phạt.
- tài liệu subdomain là verified và monitored as của nó own Search Console thuộc tính.
- Marketing navigation/footer links để tài liệu, và tài liệu link lại qua hữu ích contextual paths.
- Versioned tài liệu có rõ ràng canonical/differentiation rules và không uncontrolled legacy duplication.
Freemium và account URL space
- Dashboard, trial-step, người dùng-profile, và share các URL là inventoried trước khi launch.
- Riêng tư surfaces require authentication; non-tìm kiếm crawl spaces sử dụng deliberate robots rules.
-
noindexkhông phải được sử dụng as crawl-budget control. - Không URL là simultaneously robots.txt-blocked và dự kiến để expose noindex directive.
Regional SaaS các trang
- Regional các URL self-canonicalize và list reciprocal hreflang partners với hợp lệ language/region codes.
- Currency display có của nó own mechanism; hreflang là được sử dụng chỉ cho language/region targeting.
- giống nhau-language regional các trang contain có ý nghĩa market-cụ thể information nơi tách biệt indexation là dự kiến.
Tools cho SaaS kỹ thuật SEO
- Thô so với. Được kết xuất HTML Checker — so sánh ban đầu và được kết xuất HTML để catch app-shell duplication, bị thiếu nội dung/links, và robots/canonical thay đổi sau khi hydration.
- robots.txt Tester — kiểm thử app, dashboard, trial, share, asset, và công khai-trang cohorts so với bot-cụ thể rules và inspect chính xác winning directive.
- returntag — crawl regional cluster cho trả về-tag, self-reference, đích-status, canonical, code, và
x-defaultcác vấn đề. - Google Search Console URL Inspection — so sánh fetched/được kết xuất nội dung, inspect canonical/lập chỉ mục các tín hiệu, và yêu cầu validation sau khi máy chủ-kết xuất hoặc noindex thay đổi.
- Google Search Console trang lập chỉ mục và Crawl Số liệu — monitor unwanted app các URL, dự kiến exclusions, host-cấp độ crawl patterns, và tài liệu subdomain behavior.
- máy chủ nhật ký và thô/được kết xuất crawler — đo lường liệu bots spend các yêu cầu on freemium URL spaces và so sánh công khai template output trước khi và sau khi JavaScript.
SSR/SSG conversion parity kiểm thử
Kiểm thử để chạy: sau khi converting công khai template, chạy representative routes qua Render Khoảng trống và so sánh thô HTML trên routes cũng như thô versus được kết xuất nội dung theo route. Dự kiến kết quả: Main nội dung, headings, crawlable links, canonical, và dự kiến robots directives exist trong ban đầu phản hồi; distinct routes không lâu hơn share indistinguishable shell. thất bại interpretation: Hydration/dữ liệu fetching vẫn owns cốt yếu nội dung hoặc rewrites SEO các tín hiệu. Monitoring window: Immediate sau khi deployment cho mỗi changed template. Rollback trigger: Roll lại Khi thô các phản hồi lose nội dung, routes become giống hệt, hoặc hydrated output conflicts với máy chủ output.
máy chủ-side noindex kiểm thử
Kiểm thử để chạy: Fetch dự kiến exclusion không có kết xuất, inspect robots meta hoặc X-Robots-Tag, và kiểm thử URL trong robots.txt Tester. Dự kiến kết quả: Noindex là present trong ban đầu phản hồi và robots.txt permits crawl needed để đọc nó. thất bại interpretation: directive là vẫn JS-phụ thuộc hoặc hidden behind crawl block. Monitoring window: Immediate sau khi deploy và sau khi CDN/bộ nhớ đệm propagation; xác nhận Search Console state sau khi recrawl. Rollback trigger: Dừng rollout nếu shared template adds noindex để công khai các trang hoặc xóa nó từ dự kiến exclusions.
Freemium crawl-space kiểm thử
Kiểm thử để chạy: Crawl representative app/trial/dashboard/share patterns và review bot nhật ký plus robots-rule matrix sau khi architecture hoặc routing thay đổi. Dự kiến kết quả: Authenticated/riêng tư paths không thể là fetched; có chủ ý blocked thấp-giá trị spaces follow dự kiến rule; công khai marketing các trang và bắt buộc kết xuất assets vẫn được phép. thất bại interpretation: route pattern leaks crawlable infinite space hoặc overbroad rule chặn công khai nội dung/assets. Monitoring window: Immediate sau khi routing releases và during tiếp theo bot-log review. Rollback trigger: Revert Khi rule exposes riêng tư nội dung, chặn indexable cohort, hoặc ngăn bắt buộc công khai kết xuất.
Regional cluster kiểm thử
Kiểm thử để chạy: Validate deployed regional các URL với returntag và inspect trang-cấp độ canonical alongside detected hreflang đặt. Dự kiến kết quả: mỗi indexable regional URL self-canonicalizes, partners trả về-tag một, targets resolve successfully, và locale codes là hợp lệ. thất bại interpretation: cluster là incomplete, points qua các chuyển hướng/các lỗi, hoặc contradicts canonical selection. Monitoring window: Immediate sau khi deployment và sau khi bất kỳ locale/domain thay đổi. Rollback trigger: Hold new regional URL từ cluster Khi nó breaks reciprocity hoặc canonicalizes để khác locale unexpectedly.
các tài nguyên worth của bạn time
My related writing
- JavaScript SEO: Definitive Hướng dẫn — deep nguồn cho app-shell section: duplicate-clustering thất bại chế độ, SSR/static/prerendering, Vì sao I không khuyến nghị dynamic kết xuất, và Cách XHR các yêu cầu eat ngân sách crawl.
- Unlocking Growth qua Enterprise SaaS SEO — my đầy đủ SaaS hướng dẫn, parent piece; sản phẩm-led nội dung, “so với”/free-tool các trang, và JavaScript và crawl-budget các vấn đề behind SaaS các trang, tại enterprise quy mô.
- Khi nên bạn Worry về Ngân sách crawl? — chung crawl-budget hướng dẫn behind freemium-URL section: nhiều hơn crawling không có nghĩa là tốt hơn thứ hạng, nhưng uncrawled các trang có thể’t xếp hạng tại all.
- Người mới bắt đầu Hướng dẫn để kỹ thuật SEO — nơi tất cả điều này fits trong rộng hơn kỹ thuật-SEO picture.
My speaking
- Enterprise SEO Chaos (SMX Nâng cao, từ my time as kỹ thuật SEO tại IBM) — chuyển hướng chains, canonical conflicts, và JavaScript menus invisible để các crawler behind thực lớn SaaS/enterprise các trang. My standing disclaimer áp dụng: Đây là my understanding, không gospel.
Từ khoảng đó ngành
- Understand JavaScript SEO basics — Google Search Central — đó chính doc cho đó kết xuất section: crawl/render/chỉ mục phases và đó case cho SSR.
- Kết xuất on đó Web — web.dev — đó Chrome team CSR/SSR/SSG/hydration trade-off framework.
- Optimize của bạn ngân sách crawl — Google Search Central — capacity × demand và vì sao robots.txt (không
noindex) là cách bạn save ngân sách crawl. - Block Tìm kiếm lập chỉ mục với noindex — Google Search Central — đó
noindexmechanics và đó robots.txt precondition behind đó classic SaaS conflict. - Managing multi-regional và multilingual các trang — Google Search Central — đó giống nhau-language regional-duplicate hướng dẫn behind đó pricing-trang section.
- Google John Mueller On Khi nào nên Dùng Subdomain so với. Directory — Search Engine Journal — đó “we see these the same” (bản dịch) «we see những đó giống nhau» cách diễn đạt behind đó tài liệu decision.
- bingbot Series: JavaScript, Dynamic Kết xuất, và Cloaking. Oh My! — Bing Quản trị viên web Blog — Bing chính thức endorsement of dynamic kết xuất, đó point nơi Bing và my own view diverge.
- Đó five infrastructure gates behind crawl, render, và chỉ mục — Search Engine Land — Fabrice Canel “Less is more for SEO” (bản dịch) «Ít hơn là hơn cho SEO» line applied để URL sprawl.
Tự kiểm tra: SaaS kỹ thuật SEO
Five các câu hỏi on kỹ thuật patterns cụ thể để SaaS các trang. Pick câu trả lời cho mỗi, sau đó kiểm tra.
Nhật ký thay đổi
Đã cập nhật 8 thg 8, 2026.
Tóm tắt biên tập và chi tiết thay đổi đã ghi nhận.Chi tiết thay đổi
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
Không thể so sánh đầy đủ — không có bản lưu trước đó cho lần sửa đổi này.
Đã cập nhật 25 thg 7, 2026.
Tóm tắt biên tập và chi tiết thay đổi đã ghi nhận.Chi tiết thay đổi
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
Không thể so sánh đầy đủ — không có bản lưu trước đó cho lần sửa đổi này.
Đã cập nhật 18 thg 7, 2026.
Tóm tắt biên tập và chi tiết thay đổi đã ghi nhận.Chi tiết thay đổi
- Beginner
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
- Advanced
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
Không thể so sánh đầy đủ — không có bản lưu trước đó cho lần sửa đổi này.