How I deploy my blog: Chinese on Alibaba Cloud, other languages on Cloudflare
One Astro project, two domains: publishing on Alibaba Cloud and Cloudflare Pages, with working old links, language alternatives and separate Sitemaps.
My blog now uses two domains: weiyii.cn for Chinese, ay3s.com for the other languages.
The Chinese site stays on Alibaba Cloud OSS and ESA. The international site runs on Cloudflare Pages. Both use the same content source, and the language switcher takes readers to the corresponding article.
I wanted three things: manageable maintenance, a sensible setup for readers in China and abroad, and working links for articles already shared.
Why two domains?
Previously, all six languages lived on weiyii.cn. Chinese used the root; English, Japanese and other translations had directories such as /en/ and /ja/. One domain and one deployment kept things straightforward.
Once I had ay3s.com, I decided to give the translations their own site. The Chinese site already worked on Alibaba Cloud, so there was no need to move everything. A separate Cloudflare deployment also makes international traffic and settings easier to distinguish.
| Domain | Content | Hosting |
|---|---|---|
| weiyii.cn | Chinese | Alibaba Cloud OSS + ESA |
| ay3s.com | English, Spanish, Russian, Japanese and Arabic | Cloudflare Pages |
ay3s.com opens the English homepage by default. The other languages keep their directories. Reusing the URL structure simplified the move.
Static pages are enough for this blog
I build with Astro. Articles, homepages, categories and tag pages become HTML files before publication.
When someone opens an article, the server sends an existing page. The text doesn’t wait for browser-side JavaScript, and serving an article doesn’t need a database query.
For a reading-focused blog, I like having fewer things to maintain. Troubleshooting is concrete: was the page built, was the file uploaded, and has the cache updated?
The Chinese files go to OSS and are served through ESA. The international build is also static, published through Cloudflare Pages.
Two sites, one project
The last thing I wanted was two copies of the project. Changing navigation twice is how updates eventually get missed.
Instead, I keep one source and build twice:
Shared content and page code
↓
Chinese build → Alibaba Cloud OSS / ESA
International build → Cloudflare Pages
Each build has its own domain and output directory. One keeps Chinese pages; the other keeps the five other languages. Each gets a separate Sitemap.
Layouts, styles and article templates are maintained in one place. Publication checks confirm which pages belong on each site.
Old links are part of the migration
A domain change doesn’t erase links in search results, bookmarks or shared messages.
An old English article such as:
https://weiyii.cn/en/articles/article-slug/
now returns an HTTP 301 redirect to:
https://ay3s.com/en/articles/article-slug/
The article path stays the same, and query parameters are preserved. ESA handles this before the old static file is requested. Readers reach the new article, and search engines receive a permanent-move signal when they crawl again.
Each old article should lead to its matching new article. Sending everything to the homepage leaves readers searching again.
I deployed and checked the international site before enabling redirects. Reversing that order could send visitors to a destination that isn’t ready.
Language links and search metadata move together
Changing navigation alone isn’t enough. Each page has a canonical URL, and a translation moved to ay3s.com needs its canonical on that domain too.
hreflang links connect the language versions: Chinese points to the translations, which point back to Chinese and to one another. The visible switcher and the relationships in the HTML need to agree.
Sitemaps are separate as well:
- weiyii.cn lists only Chinese pages.
- ay3s.com lists only international pages.
Search platforms need the new domain verified and its Sitemap submitted separately. Verification of the Chinese site doesn’t automatically cover another domain.
I open the published pages before calling it done
An upload-success message isn’t the end of the job. I checked canonical URLs, all six language alternatives, Sitemaps and Arabic right-to-left layout locally, then checked the live site.
At the time of the move there were 30 Chinese articles and 150 translations. Including homepages and Sitemap files, 192 live addresses were verified, along with the old URLs’ 301 redirects.
A small detail: a CDN may inject an analytics script into HTML. That changes a file’s hash even when the article is correct. I check the actual difference before calling the deployment broken.
What maintenance looks like now
What I like most is that the working parts stayed in place. Chinese stays on Alibaba Cloud, translations run on Cloudflare Pages, and content and templates remain together. One split-site publishing workflow updates both.
There is extra work: separate certificates, statistics and webmaster settings, plus cross-domain links to check. But those checks can live in the workflow rather than in my memory.
For this blog, that’s enough: responsive pages, fewer broken old links and less repeated work when publishing.