[{"data":1,"prerenderedAt":1209},["ShallowReactive",2],{"content-/cloudflare-pages-routes-100-char-limit-fix":3,"all-pages-for-dir":1187,"related-/cloudflare-pages-routes-100-char-limit-fix":1188,"og-image-/cloudflare-pages-routes-100-char-limit-fix":1208},{"id":4,"title":5,"body":6,"category":1172,"concepts":1172,"description":1173,"extension":1174,"meta":1175,"navigation":272,"ogImage":1172,"path":1176,"project_name":1172,"published":1177,"publishedAt":1178,"seo":1179,"source":1172,"stem":1180,"tags":1181,"todo":1172,"unpublished":1177,"updatedAt":1172,"__hash__":1186},"pages/2025-11/2025-11-26/cloudflare-pages-routes-100-char-limit-fix.md","Cloudflare Pages デプロイエラー解決：_routes.json の100文字制限対応",{"type":7,"value":8,"toc":1155},"minimark",[9,13,17,21,32,35,46,49,59,67,70,75,78,120,124,129,136,140,148,154,658,665,740,747,760,764,918,921,924,964,967,973,976,979,982,1025,1028,1054,1059,1065,1068,1094,1097,1129,1132,1151],[10,11,5],"h1",{"id":12},"cloudflare-pages-デプロイエラー解決_routesjson-の100文字制限対応",[14,15,16],"h2",{"id":16},"問題の概要",[18,19,20],"p",{},"Cloudflare Pagesへのデプロイ時に以下のエラーが発生しました：",[22,23,28],"pre",{"className":24,"code":26,"language":27},[25],"language-text","X [ERROR] Invalid _routes.json file found at: C:\\Users\\numbe\\Git_repo\\mdx-playground\\apps\\web\\dist\\_routes.json\n\n  Detected rules the are over the 100 character limit. Please make sure that each include and\n  exclude routing rule is at most 100 characters long.\n","text",[29,30,26],"code",{"__ignoreMap":31},"",[14,33,34],{"id":34},"エラーの原因",[18,36,37,38,41,42,45],{},"Nuxt + Nitro（cloudflare-pages preset）でビルドすると、静的アセット（画像、Excel、その他のファイル）が",[29,39,40],{},"dist/_routes.json","の",[29,43,44],{},"exclude","セクションに個別のファイルパスとして追加されます。",[18,47,48],{},"問題のあったファイル名の例：",[50,51,52],"ul",{},[53,54,55,58],"li",{},[29,56,57],{},"/2025-11-23/www.zeiri4.com_shoukai_split-step-form_chat-ui__businessType=3&businessGroup=3&businessStep=1&promotionPageId=297&trackingCode=chat_ui_firstQuestion_removeCompanyName&skipCompanyName=true.png"," （197文字）",[18,60,61,62,66],{},"Cloudflare Pagesは各ルーティングルールに",[63,64,65],"strong",{},"100文字までの制限","を設けているため、このような長いパスを含むルールはエラーになります。",[14,68,69],{"id":69},"解決方法",[71,72,74],"h3",{"id":73},"_1-一時対処ファイル名のリネーム","1. 一時対処：ファイル名のリネーム",[18,76,77],{},"長いファイル名を短くリネームすることで一時的に解決できますが、これは根本的な解決にはなりません。",[22,79,83],{"className":80,"code":81,"language":82,"meta":31,"style":31},"language-bash shiki shiki-themes vitesse-light vitesse-light","# 例\nmv \"長いファイル名.png\" \"short-name.png\"\n","bash",[29,84,85,94],{"__ignoreMap":31},[86,87,90],"span",{"class":88,"line":89},"line",1,[86,91,93],{"class":92},"sxvE3","# 例\n",[86,95,97,101,105,109,112,114,117],{"class":88,"line":96},2,[86,98,100],{"class":99},"senZ8","mv",[86,102,104],{"class":103},"sMJiu"," \"",[86,106,108],{"class":107},"sdGka","長いファイル名.png",[86,110,111],{"class":103},"\"",[86,113,104],{"class":103},[86,115,116],{"class":107},"short-name.png",[86,118,119],{"class":103},"\"\n",[71,121,123],{"id":122},"_2-恒久対処ビルド後スクリプトでワイルドカードパターンを使用","2. 恒久対処：ビルド後スクリプトでワイルドカードパターンを使用",[18,125,126],{},[63,127,128],{},"これが推奨される解決方法です。",[18,130,131,132,135],{},"Nitroが生成する ",[29,133,134],{},"_routes.json"," を、ビルド後に自動的にワイルドカードパターンを使用したバージョンに置き換えます。",[137,138,139],"h4",{"id":139},"実装手順",[141,142,143],"ol",{},[53,144,145],{},[63,146,147],{},"ビルド後スクリプトの作成",[18,149,150,153],{},[29,151,152],{},"apps/web/scripts/fix-routes.mjs"," を作成：",[22,155,159],{"className":156,"code":157,"language":158,"meta":31,"style":31},"language-javascript shiki shiki-themes vitesse-light vitesse-light","import { writeFile } from 'node:fs/promises';\nimport { existsSync } from 'node:fs';\nimport { resolve, dirname } from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\nconst __dirname = dirname(fileURLToPath(import.meta.url));\nconst routesPath = resolve(__dirname, '../dist/_routes.json');\n\nif (existsSync(routesPath)) {\n  const routes = {\n    version: 1,\n    include: [\"/*\"],\n    exclude: [\n      \"/_nuxt/*\",\n      \"/dump.pages.sql\",\n      \"/favicon.ico\",\n      \"/robots.txt\",\n      \"/data/*\",\n      \"/excel/*\",\n      \"/images/*\",\n      \"/__nuxt_content/*\",\n      \"/20*/*\"  // 日付ディレクトリの画像ファイル\n    ]\n  };\n\n  await writeFile(routesPath, JSON.stringify(routes, null, 2));\n  console.log('✓ Updated _routes.json with wildcard patterns for Cloudflare Pages');\n} else {\n  console.warn('⚠ _routes.json not found, skipping...');\n}\n","javascript",[29,160,161,193,215,244,267,274,314,343,348,371,384,400,421,432,445,457,469,481,493,505,517,529,542,548,554,559,598,620,631,652],{"__ignoreMap":31},[86,162,163,167,171,175,178,181,184,187,190],{"class":88,"line":89},[86,164,166],{"class":165},"sHkkW","import",[86,168,170],{"class":169},"shFtX"," {",[86,172,174],{"class":173},"s4oTP"," writeFile",[86,176,177],{"class":169}," }",[86,179,180],{"class":165}," from",[86,182,183],{"class":103}," '",[86,185,186],{"class":107},"node:fs/promises",[86,188,189],{"class":103},"'",[86,191,192],{"class":169},";\n",[86,194,195,197,199,202,204,206,208,211,213],{"class":88,"line":96},[86,196,166],{"class":165},[86,198,170],{"class":169},[86,200,201],{"class":173}," existsSync",[86,203,177],{"class":169},[86,205,180],{"class":165},[86,207,183],{"class":103},[86,209,210],{"class":107},"node:fs",[86,212,189],{"class":103},[86,214,192],{"class":169},[86,216,218,220,222,225,228,231,233,235,237,240,242],{"class":88,"line":217},3,[86,219,166],{"class":165},[86,221,170],{"class":169},[86,223,224],{"class":173}," resolve",[86,226,227],{"class":169},",",[86,229,230],{"class":173}," dirname",[86,232,177],{"class":169},[86,234,180],{"class":165},[86,236,183],{"class":103},[86,238,239],{"class":107},"node:path",[86,241,189],{"class":103},[86,243,192],{"class":169},[86,245,247,249,251,254,256,258,260,263,265],{"class":88,"line":246},4,[86,248,166],{"class":165},[86,250,170],{"class":169},[86,252,253],{"class":173}," fileURLToPath",[86,255,177],{"class":169},[86,257,180],{"class":165},[86,259,183],{"class":103},[86,261,262],{"class":107},"node:url",[86,264,189],{"class":103},[86,266,192],{"class":169},[86,268,270],{"class":88,"line":269},5,[86,271,273],{"emptyLinePlaceholder":272},true,"\n",[86,275,277,281,284,287,289,292,295,297,299,302,306,308,311],{"class":88,"line":276},6,[86,278,280],{"class":279},"stQ0i","const",[86,282,283],{"class":173}," __dirname",[86,285,286],{"class":169}," =",[86,288,230],{"class":99},[86,290,291],{"class":169},"(",[86,293,294],{"class":99},"fileURLToPath",[86,296,291],{"class":169},[86,298,166],{"class":165},[86,300,301],{"class":169},".",[86,303,305],{"class":304},"sz8Xr","meta",[86,307,301],{"class":169},[86,309,310],{"class":173},"url",[86,312,313],{"class":169},"));\n",[86,315,317,319,322,324,326,328,331,333,335,338,340],{"class":88,"line":316},7,[86,318,280],{"class":279},[86,320,321],{"class":173}," routesPath",[86,323,286],{"class":169},[86,325,224],{"class":99},[86,327,291],{"class":169},[86,329,330],{"class":173},"__dirname",[86,332,227],{"class":169},[86,334,183],{"class":103},[86,336,337],{"class":107},"../dist/_routes.json",[86,339,189],{"class":103},[86,341,342],{"class":169},");\n",[86,344,346],{"class":88,"line":345},8,[86,347,273],{"emptyLinePlaceholder":272},[86,349,351,354,357,360,362,365,368],{"class":88,"line":350},9,[86,352,353],{"class":165},"if",[86,355,356],{"class":169}," (",[86,358,359],{"class":99},"existsSync",[86,361,291],{"class":169},[86,363,364],{"class":173},"routesPath",[86,366,367],{"class":169},"))",[86,369,370],{"class":169}," {\n",[86,372,374,377,380,382],{"class":88,"line":373},10,[86,375,376],{"class":279},"  const",[86,378,379],{"class":173}," routes",[86,381,286],{"class":169},[86,383,370],{"class":169},[86,385,387,390,393,397],{"class":88,"line":386},11,[86,388,389],{"class":304},"    version",[86,391,392],{"class":169},":",[86,394,396],{"class":395},"sM54T"," 1",[86,398,399],{"class":169},",\n",[86,401,403,406,408,411,413,416,418],{"class":88,"line":402},12,[86,404,405],{"class":304},"    include",[86,407,392],{"class":169},[86,409,410],{"class":169}," [",[86,412,111],{"class":103},[86,414,415],{"class":107},"/*",[86,417,111],{"class":103},[86,419,420],{"class":169},"],\n",[86,422,424,427,429],{"class":88,"line":423},13,[86,425,426],{"class":304},"    exclude",[86,428,392],{"class":169},[86,430,431],{"class":169}," [\n",[86,433,435,438,441,443],{"class":88,"line":434},14,[86,436,437],{"class":103},"      \"",[86,439,440],{"class":107},"/_nuxt/*",[86,442,111],{"class":103},[86,444,399],{"class":169},[86,446,448,450,453,455],{"class":88,"line":447},15,[86,449,437],{"class":103},[86,451,452],{"class":107},"/dump.pages.sql",[86,454,111],{"class":103},[86,456,399],{"class":169},[86,458,460,462,465,467],{"class":88,"line":459},16,[86,461,437],{"class":103},[86,463,464],{"class":107},"/favicon.ico",[86,466,111],{"class":103},[86,468,399],{"class":169},[86,470,472,474,477,479],{"class":88,"line":471},17,[86,473,437],{"class":103},[86,475,476],{"class":107},"/robots.txt",[86,478,111],{"class":103},[86,480,399],{"class":169},[86,482,484,486,489,491],{"class":88,"line":483},18,[86,485,437],{"class":103},[86,487,488],{"class":107},"/data/*",[86,490,111],{"class":103},[86,492,399],{"class":169},[86,494,496,498,501,503],{"class":88,"line":495},19,[86,497,437],{"class":103},[86,499,500],{"class":107},"/excel/*",[86,502,111],{"class":103},[86,504,399],{"class":169},[86,506,508,510,513,515],{"class":88,"line":507},20,[86,509,437],{"class":103},[86,511,512],{"class":107},"/images/*",[86,514,111],{"class":103},[86,516,399],{"class":169},[86,518,520,522,525,527],{"class":88,"line":519},21,[86,521,437],{"class":103},[86,523,524],{"class":107},"/__nuxt_content/*",[86,526,111],{"class":103},[86,528,399],{"class":169},[86,530,532,534,537,539],{"class":88,"line":531},22,[86,533,437],{"class":103},[86,535,536],{"class":107},"/20*/*",[86,538,111],{"class":103},[86,540,541],{"class":92},"  // 日付ディレクトリの画像ファイル\n",[86,543,545],{"class":88,"line":544},23,[86,546,547],{"class":169},"    ]\n",[86,549,551],{"class":88,"line":550},24,[86,552,553],{"class":169},"  };\n",[86,555,557],{"class":88,"line":556},25,[86,558,273],{"emptyLinePlaceholder":272},[86,560,562,565,567,569,571,573,576,578,581,583,586,588,591,593,596],{"class":88,"line":561},26,[86,563,564],{"class":165},"  await",[86,566,174],{"class":99},[86,568,291],{"class":169},[86,570,364],{"class":173},[86,572,227],{"class":169},[86,574,575],{"class":173}," JSON",[86,577,301],{"class":169},[86,579,580],{"class":99},"stringify",[86,582,291],{"class":169},[86,584,585],{"class":173},"routes",[86,587,227],{"class":169},[86,589,590],{"class":279}," null",[86,592,227],{"class":169},[86,594,595],{"class":395}," 2",[86,597,313],{"class":169},[86,599,601,604,606,609,611,613,616,618],{"class":88,"line":600},27,[86,602,603],{"class":173},"  console",[86,605,301],{"class":169},[86,607,608],{"class":99},"log",[86,610,291],{"class":169},[86,612,189],{"class":103},[86,614,615],{"class":107},"✓ Updated _routes.json with wildcard patterns for Cloudflare Pages",[86,617,189],{"class":103},[86,619,342],{"class":169},[86,621,623,626,629],{"class":88,"line":622},28,[86,624,625],{"class":169},"}",[86,627,628],{"class":165}," else",[86,630,370],{"class":169},[86,632,634,636,638,641,643,645,648,650],{"class":88,"line":633},29,[86,635,603],{"class":173},[86,637,301],{"class":169},[86,639,640],{"class":99},"warn",[86,642,291],{"class":169},[86,644,189],{"class":103},[86,646,647],{"class":107},"⚠ _routes.json not found, skipping...",[86,649,189],{"class":103},[86,651,342],{"class":169},[86,653,655],{"class":88,"line":654},30,[86,656,657],{"class":169},"}\n",[141,659,660],{"start":96},[53,661,662],{},[63,663,664],{},"package.json にpostbuildスクリプトを追加",[22,666,670],{"className":667,"code":668,"language":669,"meta":31,"style":31},"language-json shiki shiki-themes vitesse-light vitesse-light","{\n  \"scripts\": {\n    \"build\": \"nuxt build\",\n    \"postbuild\": \"node scripts/fix-routes.mjs\"\n  }\n}\n","json",[29,671,672,677,692,713,731,736],{"__ignoreMap":31},[86,673,674],{"class":88,"line":89},[86,675,676],{"class":169},"{\n",[86,678,679,683,686,688,690],{"class":88,"line":96},[86,680,682],{"class":681},"sqvqQ","  \"",[86,684,685],{"class":304},"scripts",[86,687,111],{"class":681},[86,689,392],{"class":169},[86,691,370],{"class":169},[86,693,694,697,700,702,704,706,709,711],{"class":88,"line":217},[86,695,696],{"class":681},"    \"",[86,698,699],{"class":304},"build",[86,701,111],{"class":681},[86,703,392],{"class":169},[86,705,104],{"class":103},[86,707,708],{"class":107},"nuxt build",[86,710,111],{"class":103},[86,712,399],{"class":169},[86,714,715,717,720,722,724,726,729],{"class":88,"line":246},[86,716,696],{"class":681},[86,718,719],{"class":304},"postbuild",[86,721,111],{"class":681},[86,723,392],{"class":169},[86,725,104],{"class":103},[86,727,728],{"class":107},"node scripts/fix-routes.mjs",[86,730,119],{"class":103},[86,732,733],{"class":88,"line":269},[86,734,735],{"class":169},"  }\n",[86,737,738],{"class":88,"line":276},[86,739,657],{"class":169},[18,741,742,743,746],{},"これにより、",[29,744,745],{},"pnpm build"," を実行すると自動的に以下が実行されます：",[141,748,749,755],{},[53,750,751,752,754],{},"Nuxtビルド → Nitroが ",[29,753,134],{}," を生成",[53,756,757,759],{},[29,758,719],{}," スクリプトが実行 → ワイルドカードパターンで上書き",[14,761,763],{"id":762},"修正後の-_routesjson","修正後の _routes.json",[22,765,767],{"className":667,"code":766,"language":669,"meta":31,"style":31},"{\n  \"version\": 1,\n  \"include\": [\"/*\"],\n  \"exclude\": [\n    \"/_nuxt/*\",\n    \"/dump.pages.sql\",\n    \"/favicon.ico\",\n    \"/robots.txt\",\n    \"/data/*\",\n    \"/excel/*\",\n    \"/images/*\",\n    \"/__nuxt_content/*\",\n    \"/20*/*\"\n  ]\n}\n",[29,768,769,773,788,809,821,831,841,851,861,871,881,891,901,909,914],{"__ignoreMap":31},[86,770,771],{"class":88,"line":89},[86,772,676],{"class":169},[86,774,775,777,780,782,784,786],{"class":88,"line":96},[86,776,682],{"class":681},[86,778,779],{"class":304},"version",[86,781,111],{"class":681},[86,783,392],{"class":169},[86,785,396],{"class":395},[86,787,399],{"class":169},[86,789,790,792,795,797,799,801,803,805,807],{"class":88,"line":217},[86,791,682],{"class":681},[86,793,794],{"class":304},"include",[86,796,111],{"class":681},[86,798,392],{"class":169},[86,800,410],{"class":169},[86,802,111],{"class":103},[86,804,415],{"class":107},[86,806,111],{"class":103},[86,808,420],{"class":169},[86,810,811,813,815,817,819],{"class":88,"line":246},[86,812,682],{"class":681},[86,814,44],{"class":304},[86,816,111],{"class":681},[86,818,392],{"class":169},[86,820,431],{"class":169},[86,822,823,825,827,829],{"class":88,"line":269},[86,824,696],{"class":103},[86,826,440],{"class":107},[86,828,111],{"class":103},[86,830,399],{"class":169},[86,832,833,835,837,839],{"class":88,"line":276},[86,834,696],{"class":103},[86,836,452],{"class":107},[86,838,111],{"class":103},[86,840,399],{"class":169},[86,842,843,845,847,849],{"class":88,"line":316},[86,844,696],{"class":103},[86,846,464],{"class":107},[86,848,111],{"class":103},[86,850,399],{"class":169},[86,852,853,855,857,859],{"class":88,"line":345},[86,854,696],{"class":103},[86,856,476],{"class":107},[86,858,111],{"class":103},[86,860,399],{"class":169},[86,862,863,865,867,869],{"class":88,"line":350},[86,864,696],{"class":103},[86,866,488],{"class":107},[86,868,111],{"class":103},[86,870,399],{"class":169},[86,872,873,875,877,879],{"class":88,"line":373},[86,874,696],{"class":103},[86,876,500],{"class":107},[86,878,111],{"class":103},[86,880,399],{"class":169},[86,882,883,885,887,889],{"class":88,"line":386},[86,884,696],{"class":103},[86,886,512],{"class":107},[86,888,111],{"class":103},[86,890,399],{"class":169},[86,892,893,895,897,899],{"class":88,"line":402},[86,894,696],{"class":103},[86,896,524],{"class":107},[86,898,111],{"class":103},[86,900,399],{"class":169},[86,902,903,905,907],{"class":88,"line":423},[86,904,696],{"class":103},[86,906,536],{"class":107},[86,908,119],{"class":103},[86,910,911],{"class":88,"line":434},[86,912,913],{"class":169},"  ]\n",[86,915,916],{"class":88,"line":447},[86,917,657],{"class":169},[18,919,920],{},"すべてのルールが100文字以内に収まっています。",[14,922,923],{"id":923},"動作確認",[22,925,927],{"className":80,"code":926,"language":82,"meta":31,"style":31},"cd apps/web\npnpm build\npnpm exec wrangler pages deploy dist\n",[29,928,929,937,945],{"__ignoreMap":31},[86,930,931,934],{"class":88,"line":89},[86,932,933],{"class":304},"cd",[86,935,936],{"class":107}," apps/web\n",[86,938,939,942],{"class":88,"line":96},[86,940,941],{"class":99},"pnpm",[86,943,944],{"class":107}," build\n",[86,946,947,949,952,955,958,961],{"class":88,"line":217},[86,948,941],{"class":99},[86,950,951],{"class":107}," exec",[86,953,954],{"class":107}," wrangler",[86,956,957],{"class":107}," pages",[86,959,960],{"class":107}," deploy",[86,962,963],{"class":107}," dist\n",[18,965,966],{},"ビルド出力の最後に以下のメッセージが表示されます：",[22,968,971],{"className":969,"code":970,"language":27},[25],"✓ Updated _routes.json with wildcard patterns for Cloudflare Pages\n",[29,972,970],{"__ignoreMap":31},[14,974,975],{"id":975},"ファイル命名規則のベストプラクティス",[18,977,978],{},"ビルド後スクリプトで自動修正されるため、長いファイル名でも問題ありませんが、以下のベストプラクティスに従うことを推奨します：",[71,980,981],{"id":981},"避けるべきファイル名",[141,983,984,1003,1014],{},[53,985,986,989,995,998,999,1002],{},[63,987,988],{},"日本語を含むファイル名",[22,990,993],{"className":991,"code":992,"language":27},[25],"❌ 【狙い筋Aと狙い筋Bの話】.xlsx\n✅ targeting-strategy.xlsx\n",[29,994,992],{"__ignoreMap":31},[996,997],"br",{},"日本語はURLエンコードされると1文字が数倍の長さになります。\n例：",[29,1000,1001],{},"【狙い筋Aと狙い筋Bの話】"," → 数十文字以上",[53,1004,1005,1008],{},[63,1006,1007],{},"長いクエリパラメータを含むスクリーンショット名",[22,1009,1012],{"className":1010,"code":1011,"language":27},[25],"❌ www.zeiri4.com_shoukai_split-step-form_chat-ui__businessType=3&businessGroup=3&businessStep=1&promotionPageId=297&trackingCode=chat_ui_firstQuestion_removeCompanyName&skipCompanyName=true.png\n✅ zeiri4-chat-ui-form.png\n",[29,1013,1011],{"__ignoreMap":31},[53,1015,1016,1019],{},[63,1017,1018],{},"スペースや特殊文字を含むファイル名",[22,1020,1023],{"className":1021,"code":1022,"language":27},[25],"❌ Generated Image November 24, 2025 - 7_23AM.jpeg\n✅ generated-image-2025-11-24.jpeg\n",[29,1024,1022],{"__ignoreMap":31},[71,1026,1027],{"id":1027},"推奨されるファイル名",[50,1029,1030,1041,1044,1047],{},[53,1031,1032,1033,1036,1037,1040],{},"英数字、ハイフン（",[29,1034,1035],{},"-","）、アンダースコア（",[29,1038,1039],{},"_","）のみ使用",[53,1042,1043],{},"小文字を使用（大文字小文字の混在を避ける）",[53,1045,1046],{},"意味のある短い名前を付ける",[53,1048,1049,1050,1053],{},"日付を含める場合は ",[29,1051,1052],{},"YYYY-MM-DD"," 形式",[18,1055,1056],{},[63,1057,1058],{},"例：",[22,1060,1063],{"className":1061,"code":1062,"language":27},[25],"✅ nvidia-financial-chart.png\n✅ tax-consultation-form-2025-11.pdf\n✅ user-flow-diagram.drawio\n",[29,1064,1062],{"__ignoreMap":31},[71,1066,1067],{"id":1067},"なぜこれが重要か",[50,1069,1070,1076,1082,1088],{},[53,1071,1072,1075],{},[63,1073,1074],{},"URLエンコード",": 日本語や特殊文字はパーセントエンコーディングされ、文字数が3倍以上に増加",[53,1077,1078,1081],{},[63,1079,1080],{},"可読性",": 英数字の方がURLやパスで読みやすい",[53,1083,1084,1087],{},[63,1085,1086],{},"互換性",": 異なるOS間でのファイル共有時の問題を回避",[53,1089,1090,1093],{},[63,1091,1092],{},"デバッグ",": エラーログやコンソールで識別しやすい",[14,1095,1096],{"id":1096},"まとめ",[50,1098,1099,1105,1111,1117,1123],{},[53,1100,1101,1104],{},[63,1102,1103],{},"問題",": Cloudflare Pagesの_routes.jsonには各ルールに100文字制限がある",[53,1106,1107,1110],{},[63,1108,1109],{},"原因",": Nitroが個別ファイルパスを生成し、長いファイル名（特に日本語やURLエンコードされる文字）が制限を超える",[53,1112,1113,1116],{},[63,1114,1115],{},"解決",": ビルド後スクリプトでワイルドカードパターンに自動置換",[53,1118,1119,1122],{},[63,1120,1121],{},"効果",": 今後どんなに長いファイル名を追加しても問題なし",[53,1124,1125,1128],{},[63,1126,1127],{},"推奨",": ファイル名は英数字とハイフン・アンダースコアのみを使用し、短く意味のある名前を付ける",[14,1130,1131],{"id":1131},"関連ファイル",[50,1133,1134,1139,1145],{},[53,1135,1136,1138],{},[29,1137,152],{}," - ルート修正スクリプト",[53,1140,1141,1144],{},[29,1142,1143],{},"apps/web/package.json"," - postbuildフックの設定",[53,1146,1147,1150],{},[29,1148,1149],{},"apps/web/dist/_routes.json"," - 修正後のルーティング設定（ビルド時に生成）",[1152,1153,1154],"style",{},"html pre.shiki code .sxvE3, html code.shiki .sxvE3{--shiki-default:#A0ADA0;--shiki-dark:#A0ADA0}html pre.shiki code .senZ8, html code.shiki .senZ8{--shiki-default:#59873A;--shiki-dark:#59873A}html pre.shiki code .sMJiu, html code.shiki .sMJiu{--shiki-default:#B5695977;--shiki-dark:#B5695977}html pre.shiki code .sdGka, html code.shiki .sdGka{--shiki-default:#B56959;--shiki-dark:#B56959}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sHkkW, html code.shiki .sHkkW{--shiki-default:#1E754F;--shiki-dark:#1E754F}html pre.shiki code .shFtX, html code.shiki .shFtX{--shiki-default:#999999;--shiki-dark:#999999}html pre.shiki code .s4oTP, html code.shiki .s4oTP{--shiki-default:#B07D48;--shiki-dark:#B07D48}html pre.shiki code .stQ0i, html code.shiki .stQ0i{--shiki-default:#AB5959;--shiki-dark:#AB5959}html pre.shiki code .sz8Xr, html code.shiki .sz8Xr{--shiki-default:#998418;--shiki-dark:#998418}html pre.shiki code .sM54T, html code.shiki .sM54T{--shiki-default:#2F798A;--shiki-dark:#2F798A}html pre.shiki code .sqvqQ, html code.shiki .sqvqQ{--shiki-default:#99841877;--shiki-dark:#99841877}",{"title":31,"searchDepth":96,"depth":96,"links":1156},[1157,1158,1159,1163,1164,1165,1170,1171],{"id":16,"depth":96,"text":16},{"id":34,"depth":96,"text":34},{"id":69,"depth":96,"text":69,"children":1160},[1161,1162],{"id":73,"depth":217,"text":74},{"id":122,"depth":217,"text":123},{"id":762,"depth":96,"text":763},{"id":923,"depth":96,"text":923},{"id":975,"depth":96,"text":975,"children":1166},[1167,1168,1169],{"id":981,"depth":217,"text":981},{"id":1027,"depth":217,"text":1027},{"id":1067,"depth":217,"text":1067},{"id":1096,"depth":96,"text":1096},{"id":1131,"depth":96,"text":1131},null,"Cloudflare Pagesへのデプロイ時に発生する「_routes.jsonのルールが100文字を超えている」エラーの原因と恒久的な解決方法","md",{},"/cloudflare-pages-routes-100-char-limit-fix",false,"2025-11-26T00:00:00.000Z",{"title":5,"description":1173},"2025-11/2025-11-26/cloudflare-pages-routes-100-char-limit-fix",[1182,1183,1184,1185],"cloudflare","deployment","troubleshooting","nuxt","UwGB71IxAVDcyHFt-L4PowmS2zeVw81Hk1lA-aP-Adg",[],[1189,1193,1197,1201,1205],{"title":1190,"path":1191,"publishedAt":1192},"Cloudflare Pages Git統合からGitHub Actions Direct Uploadへの移行記録","/cloudflare-github-actions-migration","2025-12-07T00:00:00.000Z",{"title":1194,"path":1195,"publishedAt":1196},"ページ遷移が遅い問題：SSR vs SSG の選択ミス","/ssr-vs-ssg-page-transition-slow","2025-12-05T00:00:00.000Z",{"title":1198,"path":1199,"publishedAt":1200},"Cloudflareデプロイの自動化スクリプト追加","/deploy-script-setup","2025-12-01T00:00:00.000Z",{"title":1202,"path":1203,"publishedAt":1204},"Cloudflare PagesとWorkers Static Assetsの違い、エッジキャッシュが効く仕組み","/cloudflare-pages-workers-static-assets","2026-07-22T00:00:00.000Z",{"title":1206,"path":1207,"publishedAt":1204},"Webサービスの技術構成 2026年版 — Vue.js/Nuxt/Astroの使い分けとその理由","/web-tech-stack-2026","https://log.eurekapu.com/og/blog/cloudflare-pages-routes-100-char-limit-fix.png?v=2025-11-26T00%3A00%3A00.000Z&title=Cloudflare%20Pages%20%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4%E3%82%A8%E3%83%A9%E3%83%BC%E8%A7%A3%E6%B1%BA%EF%BC%9A_routes.json%20%E3%81%AE100%E6%96%87%E5%AD%97%E5%88%B6%E9%99%90%E5%AF%BE%E5%BF%9C&author=Kei%20Komatsu&sig=c57f84e477595f7f",1785654664316]