- New, deliberately separate pipeline for sub-solutions (markets and solutions must never break each other): generator vitec:generate-subsolution-workbooks (list from the page tree below /solutions, 39 workbooks, every sub-solution matched to its record), SubsolutionWorkbookImporter + CLI vitec:import-subsolution-workbooks, and a "Sub-Solutions" tab in the VITEC Import module with its own inbox migrations/subsolutions_xlsx_in/ - Targets the existing template 5 "Solution Detail" without changing it: hero element in colPos 1, the remaining sections in fixed order in colPos 0, found again by CType on re-import; existing empty sub-solution pages are switched to layout 5, missing ones created hidden; detail_page set on the solution record - Workbook per the Figma "07 Solution Detail page": hero without video teaser, intro with headline and without learn-more/portfolio, extended icon list, own page-layout reference image - Shared content elements: market hero/intro/insights relabelled "Market/Solution", market intro gains the optional intro_headline field (new column, requires extension:setup) - Fix: DataHandler puts every NEW record with a positive pid at the top of its column, so pages built in one run came out reversed. Both importers now track the page order per colPos and write tt_content.sorting explicitly after the DataHandler run; re-applying repairs pages imported earlier (verified on the control-room sub-solution and sub-market page 443) - migrations/fill_test_subsolution.php: realistic test content from vitec.com copy and images for the control-room sub-solution - Docs section 5z
28 lines
1.0 KiB
ApacheConf
28 lines
1.0 KiB
ApacheConf
RewriteEngine On
|
|
RewriteBase /_frontend/
|
|
|
|
RewriteRule ^index\.html$ - [L]
|
|
|
|
RewriteCond %{REQUEST_FILENAME} -f [OR]
|
|
RewriteCond %{REQUEST_FILENAME} -d
|
|
RewriteRule ^ - [L]
|
|
|
|
RewriteRule ^ index.html [L]
|
|
|
|
# ── Cache headers ────────────────────────────────────────────────────────────
|
|
|
|
# index.html: never cache — always fetch fresh so the browser picks up
|
|
# the latest hashed JS/CSS filenames after a deploy.
|
|
<Files "index.html">
|
|
Header set Cache-Control "no-store, no-cache, must-revalidate"
|
|
Header set Pragma "no-cache"
|
|
Header set Expires "0"
|
|
</Files>
|
|
|
|
# Hashed assets (JS, CSS, fonts, images inside /assets/):
|
|
# Vite appends a content hash to every filename, so these are immutable.
|
|
# Cache them for 1 year — a new deploy produces new filenames automatically.
|
|
<FilesMatch "\.(js|css|woff2?|ttf|eot|otf)$">
|
|
Header set Cache-Control "public, max-age=31536000, immutable"
|
|
</FilesMatch>
|