'use client' import Link from "next/link"; import { useEffect, useState } from "react"; type PageType = { searchParams: Record, params: { articleId: string, } } export default function Page(context: PageType) { const [iframeUrl, setIframeUrl] = useState("abount:blank"); const [iaSearchPageUrl, setIaSearchPageUrl] = useState("abount:blank"); useEffect(() => { const paramString = new URL(document.location.href).searchParams.get("src") ?? ""; const showOriginalUrl = parseParam(paramString); if (showOriginalUrl != null) { const iaUrlKey = `20241001000000`;// 同じURLで記事が更新されている場合もあるので、最終版であろう2024/10/01 00:00:00を指定 const iframeUrl = `https://web.archive.org/web/${iaUrlKey}if_/${showOriginalUrl}`; setIframeUrl(iframeUrl); const iaSeachPageUrlStr = `https://web.archive.org/web/*/${showOriginalUrl}`; setIaSearchPageUrl(iaSeachPageUrlStr); } }, []); return (
InternetArchiveの検索結果のURL: {iaSearchPageUrl}
iframeのURL: {iframeUrl}
※アキバ総研のページをIneternetArchiveで見る時はJavascriptを無効化しないと、強制的にリダイレクトされてしまいます
以下のページはInternetArchiveに保存されている内容です。
); } function parseParam(paramString: string) { let m: RegExpMatchArray | null = null; if (m = paramString.match(/^article-(\d+)$/)) { return `https://akiba-souken.com/article/${m[1]}/` } else if (m = paramString.match(/^article-(\d+)-(\d+)$/)) { return `https://akiba-souken.com/article/${m[1]}/?page=${m[2]}` } else if (m = paramString.match(/^anime-(\d+)$/)) { return `https://akiba-souken.com/anime/${m[1]}/`; } else if (m = paramString.match(/^anime-(\d+)-review$/)) { return `https://akiba-souken.com/anime/${m[1]}/review/`; } else if (m = paramString.match(/^anime-(\d+)-review-p(\d+)$/)) { return `https://akiba-souken.com/anime/${m[1]}/review/?page=${m[2]}`; } else if (m = paramString.match(/^anime-(\d+)-review-(\d+)$/)) { return `https://akiba-souken.com/anime/${m[1]}/review/${m[2]}/`; } return null; }