Skip to content

fix: відносні шляхи для підтримки хостингу в підпапці#121

Open
roman-shpp wants to merge 17 commits into
masterfrom
fix/webpack-public-path
Open

fix: відносні шляхи для підтримки хостингу в підпапці#121
roman-shpp wants to merge 17 commits into
masterfrom
fix/webpack-public-path

Conversation

@roman-shpp
Copy link
Copy Markdown

Проблема

Сайт використовував абсолютні шляхи до всіх асетів та внутрішніх посилань (/img/logo.png, /about, /courses/adults тощо). Це означало, що сайт працював коректно лише при розміщенні в корені домену. При деплої в підпапку (наприклад https://example.com/shpp/) усі ресурси та навігація ламались.

Рішення

Усі шляхи приведено до відносних через механізм автоматичного обчислення глибини сторінки.

webpack.config.js

output.publicPath: 'auto' — webpack сам обчислює відносні шляхи до JS/CSS бандлів залежно від розташування HTML-файлу.

getBaseHref(filenamePrefix, relativePagePath) — новий хелпер, повертає префікс залежно від глибини сторінки:

index.html                 →  ./
about/index.html           →  ../
courses/adults/index.html  →  ../../
ru/about/index.html        →  ../../

fixPaths(obj, baseHref) — рекурсивно патчить href-атрибути в рядках перекладів (переклади містять HTML з посиланнями типу href='/supportus'), замінюючи абсолютні шляхи на відносні.

У getCommonContent() додано baseHref та langPrefixPath (langPrefix без ведучого /, з хвостовим /), що передаються в шаблони.

Шаблони

Файл Зміна
meta.hbs Фавіконки та маніфест: /img/...{{baseHref}}img/...
header.hbs Логотип, кнопка реєстрації, перемикач мов — через baseHref + langPrefixPath
footer.hbs Посилання підтримки — через baseHref + langPrefixPath
index/contacts/about.hbs src="/img/..."src="{{baseHref}}img/..."
courses/feedbacks.hbs nav-посилання через baseHref
headerMenuLink.js langPrefix + urlbaseHref + langPrefixPath + url

Зворотна сумісність

Для розміщення в корені домену все працює як раніше — baseHref = './', шляхи резолвяться ідентично абсолютним.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant