WordPressから静的サイト(Astro+Cloudflare Pages)へ移行。URLを変えずにSEOを引き継いだ手順と確かめ方
WordPressの
この_redirects、*.pages.dev → www)は
この
最初に決めた3つのこと
作業に
| 項目 | 決めたこと | 理由 |
|---|---|---|
| 記事の |
1本も/ を |
外からの |
| 画像の |
/wp-content/uploads/... の |
画像検索や、 |
| 正式な |
www 付きhttps://www.yamayamabloglink.com)に変える |
会社サイトと |
URLを
手順1:WordPressの旧URLを機械で書き出す
WordPress にはexport/ にlink が、/page/2/ など)は
人の
手順2:Markdown に変換し、URLの形をそろえる
記事のslug に
Astro の
export default defineConfig({
site: 'https://www.yamayamabloglink.com',
output: 'static',
trailingSlash: 'always', // 末尾の / を必ず付ける
build: { format: 'directory' }, // /slug/index.html の形で書き出す
});format: 'directory' に/xampp-setup/ は dist/xampp-setup/index.html とindex.html が
手順3:ビルドのたびに、旧URLと自動で突き合わせる
一番dist/ に
for (const link of oldUrls) {
const p = decodeURIComponent(new URL(link).pathname);
let ok = fs.existsSync(path.join(DIST, p, 'index.html'));
if (!ok) {
// _redirects で 301 しているパスは、転送先が実在するときだけ OK とする
const to = redirectTarget(p);
ok = !!to && fs.existsSync(path.join(DIST, to, 'index.html'));
}
if (!ok) missing.push(link);
}ポイントは、
結果は、npm run build の
手順4:301リダイレクトを置く場所を、役割で分ける
転送は
| 置き場所 | 担当する |
例 |
|---|---|---|
public/_redirects |
パスの変更 | カテゴリー名の |
functions/_middleware.js |
ホスト名の |
www なし・*.pages.dev → 同じ |
ホスト名の*.pages.dev の
const CANONICAL = "www.yamayamabloglink.com";
const REDIRECT_HOSTS = new Set(["yamayamabloglink.com", "yamayamabloglink.pages.dev"]);
export async function onRequest({ request, next }) {
const url = new URL(request.url);
if (REDIRECT_HOSTS.has(url.hostname)) {
url.hostname = CANONICAL;
url.protocol = "https:";
url.port = "";
return Response.redirect(url.toString(), 301);
}
return next();
}デプロイごとに<id>.yamayamabloglink.pages.dev)は、
つまずいたのは、%e7%ad%8b... と_redirects は
また、/ が/xampp-setup)は、/xampp-setup/ へ
手順5:DNSを2段階で切り替え、サイトを止めない
ドメインの
| 段階 | やったこと | この |
戻し方 |
|---|---|---|---|
| 1 | Cloudflare に |
旧 WordPress の |
ネームサーバーを |
| 2 | www とyamayamabloglink.pages.dev への |
新サイト | 2つを |
段階1は、
切り
切り替えたあとに確かめたこと
- www の
各URLが 200 で 返る こと、 www なしと *.pages.devが同じ パスと クエリの まま www へ 301 する こと ( curl -Iで確認) - 旧カテゴリーの
URLが、 新しい カテゴリーの URLへ 301 する こと /feed/がRSS と して 返る こと、 ads.txtが置かれている こと - サイトマップを
送り直し、 主要な 記事の インデックス登録の 状況を Search Console で 確かめる こと
検索での
作り直すかどうかの判断は、別に考える
この
よくある質問
Q. WordPress から
Q. _redirects だけで、_redirects は*.pages.dev も
Q. ネームサーバーを