FH-Complete unterstützt versionierte JavaScript-URLs, um Browser-Caching nach Deployments zu umgehen. Dadurch lädt der Browser nach einem Deployment automatisch neue JS-Dateien statt veraltete Dateien aus dem Cache zu verwenden. Dazu gibt es die in der Datei /var/www/application/config/javascript.php die Option:
$config['use_fhcomplete_build_version_in_path'] = true;
Beispiel: /public/js/components/foo.js wird automatisch zu /public/2026030501/js/components/foo.js die Build-Version (2026030501) stammt aus: /var/www/application/config/config.php - $config['fhcomplete_build_version']
Apache Rewrite Damit die versionierten URLs funktionieren, muss Apache die Build-Version intern wieder auf den echten Dateipfad auflösen. Eine entsprechende Rewrite Regel muss der Apache VHosts Konfiguration hinzugefügt werden. Alternativ kann dies auch über die .htaccess Datei in /var/www/public/ erfolgen (.htaccess_sample)
<Directory /var/www/public>
Options -Indexes +FollowSymLinks
AllowOverride None
Require all granted
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^[0-9]{10}/(.*)$ $1 [L]
RewriteCond %{REQUEST_URI} ^(.*?)/public/index.ci.php/
RewriteRule ^index.ci.php/(.*)$ %1/index.ci.php/$1 [R=303,L]
</Directory>
Beispiel intern: /public/2026030501/js/foo.js wird zu /public/js/foo.js Die URL im Browser bleibt dabei unverändert.
Wichtig bei JavaScript Imports Imports dürfen nicht aus dem public-Pfad heraus und anschließend wieder nach public hinein navigieren.
Problematisch: import Foo from '../../../../../../public/js/foo.js'; Dies kann bei aktivem URL-Rewrite zu fehlerhaften URLs wie: /public/public/js/foo.js führen. Stattdessen sollten absolute oder saubere relative Imports verwendet werden:
import Foo from '/public/js/foo.js'; Dadurch bleiben die Imports unabhängig von der Build-Version stabil.