Під час розробки власного Laravel-пакета локалізації я додала стабільні логічні назви маршрутів і генерацію URL для іншої мови. Без кешу все працювало, але після route:cache сторінки відкривалися, а генерація URL перестала працювати. Розбираю причину та архітектурне рішення.
Локалізовані URL не обов’язково мають змушувати весь застосунок працювати з locale-specific назвами маршрутів. Розбираю підхід, у якому Laravel зберігає локалізовані URL, а frontend і application code працюють зі стабільними logical route names.
Ziggy може бездоганно працювати в браузері й водночас ламатися під час SSR. Розбираю, як побудувати єдиний routing contract для Laravel, Blade, Vue та Inertia SSR і не створювати різні route contexts у межах одного застосунку.
Я була впевнена, що SEO вже налаштоване: у браузері title, description і canonical були на місці. Але Google Search Console показала іншу картину. Так я дійшла до Inertia SSR.
У ICanUp Post і Category мають один shared slug, а локалізовані URLs відрізняються locale prefix і контентом. Розбираю, чому я відмовилася від translated slugs, як це спростило routing, hreflang, sitemap та IndexNow, і в яких проєктах language-specific slugs все ж можуть бути кращим вибором.