Align product records with sitemap V2; product family model; CLI workbook import
- vitec:migrate-product-structure: exact V2 titles, Milestone typo fix (incl. slug), QTX100 stray VSN category removed, Aligo record moved to its own category with slug /product/aligo, new Aligo Workstation record takes over /product/aligo-workstation - product families (sitemap column K) are ordinary content pages now: vitec:remove-family-records deletes the interim landing records again, reset_subproduct_flags.php clears the misused subproduct flag (the list renderer has always excluded subproduct=1) - vitec:import-product-workbook: non-interactive counterpart of the module import (same reader, mapping and DataHandler path); Arqa imported, Aligo re-applied with the corrected capabilities markup - ProductXlsxReader: new :copy cell selector (Body Copy with CTA fallback) absorbs the agency's column drift; default teaser mapping uses it - ProductListJsonRenderer: selected categories now match their whole subtree, results ordered by category tree position, sheet order within a category - read-only diagnostics: check_product_structure.php, check_productlist_ces.php
This commit is contained in:
@@ -1,27 +1,27 @@
|
||||
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>
|
||||
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>
|
||||
|
||||
@@ -25,8 +25,8 @@
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||
<title>VITEC</title>
|
||||
<script type="module" crossorigin src="/_frontend/assets/index-BHtumi6P.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="/_frontend/assets/index-DP4QFhOv.css">
|
||||
<script type="module" crossorigin src="/_frontend/assets/index-CrOmtYLr.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="/_frontend/assets/index-CrFFiPFX.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="page"></div>
|
||||
|
||||
Reference in New Issue
Block a user