<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>GitHub Pages on Jingyuan</title>
        <link>https://jingyuan-zheng.github.io/tags/github-pages/</link>
        <description>Recent content in GitHub Pages on Jingyuan</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en-US</language>
        <copyright>Jingyuan Zheng</copyright>
        <lastBuildDate>Thu, 22 Oct 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://jingyuan-zheng.github.io/tags/github-pages/index.xml" rel="self" type="application/rss+xml" /><item>
            <title>Connect an is-a.dev Subdomain to a Personal GitHub Pages Site</title>
            <link>https://jingyuan-zheng.github.io/p/is-a-dev-domain-guide/</link>
            <pubDate>Thu, 23 Jul 2026 00:00:00 +0000</pubDate>
            <guid>https://jingyuan-zheng.github.io/p/is-a-dev-domain-guide/</guid>
            <description>&lt;img src=&#34;https://jingyuan-zheng.github.io/img/is-a-dev-domain-guide/banner.png&#34; alt=&#34;Featured image of post Connect an is-a.dev Subdomain to a Personal GitHub Pages Site&#34; /&gt;&lt;p&gt;is-a.dev provides subdomains for eligible personal and non-commercial development-related sites, with registration and changes reviewed through GitHub pull requests.&lt;/p&gt;&#xA;&lt;p&gt;This blog also lists &lt;a class=&#34;link&#34; href=&#34;https://zjy.is-a.dev/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;zjy.is-a.dev&lt;/a&gt; as an address. My &lt;a class=&#34;link&#34; href=&#34;https://github.com/Jingyuan-Zheng/register&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;register repository&lt;/a&gt; is a fork of &lt;a class=&#34;link&#34; href=&#34;https://github.com/is-a-dev/register&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;is-a-dev/register&lt;/a&gt;. After approval, the domain still needs to point to the site and be bound in the hosting platform; registration alone does not finish setup.&lt;/p&gt;&#xA;&lt;div class=&#34;post-figure&#34;&gt;&#xA;&lt;img src=&#34;https://jingyuan-zheng.github.io/img/is-a-dev-domain-guide/banner.png&#34; alt=&#34;is-a.dev project banner&#34;&gt;&#xA;&lt;div class=&#34;caption&#34;&gt;Figure 1: The is-a.dev project banner, taken from the registration repository.&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h2 id=&#34;start-with-a-real-site&#34;&gt;Start with a real site&#xA;&lt;/h2&gt;&lt;p&gt;The &lt;a class=&#34;link&#34; href=&#34;https://docs.is-a.dev/quickstart/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;official Quickstart&lt;/a&gt; asks for a sufficiently complete, eligible site before applying. Read the current requirements and terms first; a domain request is not a substitute for having a site to point to.&lt;/p&gt;&#xA;&lt;p&gt;Registration rules can change. Check the &lt;a class=&#34;link&#34; href=&#34;https://docs.is-a.dev/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;official documentation&lt;/a&gt; and upstream repository before filling in the JSON file and opening a pull request.&lt;/p&gt;&#xA;&lt;h2 id=&#34;make-a-reviewable-request&#34;&gt;Make a reviewable request&#xA;&lt;/h2&gt;&lt;p&gt;The basic path is to fork the upstream registration repository, add the appropriate JSON file under &lt;code&gt;domains/&lt;/code&gt;, and open a pull request. The filename represents the requested subdomain.&lt;/p&gt;&#xA;&lt;p&gt;Keep the official PR template, provide the requested site context, and respond to review comments. A local commit or a successful push to your fork does not mean registration has been approved.&lt;/p&gt;&#xA;&lt;p&gt;Maintainers check the site and configuration, and merge times vary. Check each JSON field and destination; respond to requested changes in the same pull request.&lt;/p&gt;&#xA;&lt;h2 id=&#34;prepare-a-concrete-github-pages-request&#34;&gt;Prepare a concrete GitHub Pages request&#xA;&lt;/h2&gt;&lt;p&gt;Suppose your GitHub username is &lt;code&gt;yourname&lt;/code&gt; and you want &lt;code&gt;yourname.is-a.dev&lt;/code&gt;. In your fork, create &lt;code&gt;domains/yourname.json&lt;/code&gt;. This follows the &lt;a class=&#34;link&#34; href=&#34;https://docs.is-a.dev/guides/github-pages/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;official GitHub Pages example&lt;/a&gt;; replace both the account and destination with your own details:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;owner&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;username&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;yourname&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;records&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;CNAME&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;yourname.github.io&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;The filename requests the subdomain, &lt;code&gt;owner.username&lt;/code&gt; identifies your GitHub account, and &lt;code&gt;records.CNAME&lt;/code&gt; names the website host. Those are different roles. Do not put an article URL in the owner field or use a repository’s GitHub webpage as the hosting target. Use ordinary double quotes, no trailing comma after the final field, and no comments inside JSON.&lt;/p&gt;&#xA;&lt;p&gt;Check the upstream directory for an existing name and read the current naming requirements. &lt;code&gt;yourname&lt;/code&gt; is a placeholder, not a claim of availability. Make the original website address work first, with recognizable content and navigation, so the request points to a site reviewers can evaluate.&lt;/p&gt;&#xA;&lt;h2 id=&#34;open-the-request-against-upstream&#34;&gt;Open the request against upstream&#xA;&lt;/h2&gt;&lt;p&gt;After saving, inspect the diff for only the intended domain file. Use GitHub’s &lt;strong&gt;Contribute → Open pull request&lt;/strong&gt; flow and check the destination: the base repository should be &lt;code&gt;is-a-dev/register&lt;/code&gt;, while the source is your fork. A request opened only against your own fork does not enter upstream review.&lt;/p&gt;&#xA;&lt;p&gt;Retain and complete the PR template with the site link and screenshot. Show a usable page rather than an empty placeholder. Requests are public, so use public-facing contact information and keep credentials or unrelated personal information out of the description.&lt;/p&gt;&#xA;&lt;p&gt;For requested changes, update the same branch so the existing PR updates. Match the comment to the relevant line and field before editing. A small correction does not need a duplicate application. Automated checks can confirm requirements such as formatting; acceptance still depends on maintainer review and merge.&lt;/p&gt;&#xA;&lt;h2 id=&#34;dns-and-redirects-solve-different-problems&#34;&gt;DNS and redirects solve different problems&#xA;&lt;/h2&gt;&lt;p&gt;A DNS record helps a hostname reach the appropriate service. It does not normally contain a browser path such as &lt;code&gt;/zh/&lt;/code&gt;, and a CNAME target is a hostname rather than a full HTTPS URL.&lt;/p&gt;&#xA;&lt;p&gt;A URL redirect instead sends the browser to another address, potentially including a path. The &lt;a class=&#34;link&#34; href=&#34;https://docs.is-a.dev/faq/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;official FAQ&lt;/a&gt; explains that is-a.dev&amp;rsquo;s URL option is a custom redirect mechanism rather than a normal DNS record.&lt;/p&gt;&#xA;&lt;p&gt;For example, to serve a GitHub Pages site directly at &lt;code&gt;name.is-a.dev&lt;/code&gt;, configure DNS and bind the domain in Pages. To send visitors to an existing &lt;code&gt;/zh/&lt;/code&gt; page instead, examine the official URL redirect option. Choose the outcome before filling a record so a webpage path does not end up in a CNAME.&lt;/p&gt;&#xA;&lt;h2 id=&#34;configure-github-pages-as-well&#34;&gt;Configure GitHub Pages as well&#xA;&lt;/h2&gt;&lt;p&gt;For a GitHub Pages setup, the &lt;a class=&#34;link&#34; href=&#34;https://docs.is-a.dev/guides/github-pages/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;official platform guide&lt;/a&gt; describes a CNAME target such as &lt;code&gt;github-username.github.io&lt;/code&gt;. After the registration PR is merged, add the custom domain in the hosting repository&amp;rsquo;s Pages settings and enable HTTPS when available. If Hugo publishes the site automatically, keep the domain configuration in the source or build workflow so the next deployment preserves it.&lt;/p&gt;&#xA;&lt;p&gt;Domain verification is another separate step and can involve a TXT record at a verification hostname. Do not combine unrelated record types at the same CNAME hostname simply because a host asks for verification; follow the provider-specific instructions.&lt;/p&gt;&#xA;&lt;h2 id=&#34;keep-hugo-source-and-hosting-settings-aligned&#34;&gt;Keep Hugo source and hosting settings aligned&#xA;&lt;/h2&gt;&lt;p&gt;The Hugo source repository and the repository serving GitHub Pages can be different. Configure the custom domain where the site is actually published, and edit Hugo’s site address in its source configuration. Identify those two roles before changing settings.&lt;/p&gt;&#xA;&lt;p&gt;Check &lt;code&gt;baseURL&lt;/code&gt; and how the deployment preserves domain configuration. If your publishing method needs a CNAME file, retain it in source that reaches the output or generate it during the build. A manual change only inside one &lt;code&gt;public/&lt;/code&gt; directory can disappear on the next build. The exact placement should follow your Pages deployment method.&lt;/p&gt;&#xA;&lt;p&gt;Build normally after changing the address, then inspect both language homepages, articles, images, language switching, and feeds. A new domain does not require new article slugs. If some links still return to the old host, trace configuration and absolute body links before changing established paths.&lt;/p&gt;&#xA;&lt;h2 id=&#34;verify-the-result-in-layers&#34;&gt;Verify the result in layers&#xA;&lt;/h2&gt;&lt;p&gt;Check the merged registration, DNS resolution, hosting custom-domain setting, certificate, and actual page response separately. A 404, certificate error, and redirect loop indicate different stages of the setup.&lt;/p&gt;&#xA;&lt;p&gt;For a bilingual blog, open both language paths and follow a few internal links. A working homepage does not establish that article links, feeds, and language switching all use the intended address.&lt;/p&gt;&#xA;&lt;p&gt;Later updates and removal also go through the registration workflow. Keep the permanent host address usable while checking a new custom domain. For the site&amp;rsquo;s broader Hugo setup, see &lt;a class=&#34;link&#34; href=&#34;https://jingyuan-zheng.github.io/p/liquid-stack-open-source-release/&#34; &gt;Liquid Stack&lt;/a&gt;; for current service requirements, return to the &lt;a class=&#34;link&#34; href=&#34;https://docs.is-a.dev/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;official documentation&lt;/a&gt;.&lt;/p&gt;&#xA;</description>
        </item></channel>
</rss>
