Assets und Dateien
Neben HTML kopiert FG Static Export lokale Dateien in das statische Export-Verzeichnis. Dafür kombiniert das Plugin einen referenzbasierten Asset-Scan mit zusätzlichen Verzeichnis-Kopien.
Asset-Scan aus HTML
Section titled “Asset-Scan aus HTML”Das gerenderte und bereits auf die Ziel-URL umgeschriebene HTML wird auf folgende Quellen untersucht:
srchrefdata-srcdata-backgroundsrcseturl(...)in doppel-quoted Inline-Styles- zitierte lokale URLs auf
.css,.jsoder.mjs
Anker, mailto:, tel:, javascript:, Data-URIs und nicht-HTTP-Schemes werden ignoriert.
Absolute HTTP-/HTTPS-URLs werden nur als lokal behandelt, wenn ihr Host der internen URL, site_url() oder der Ziel-URL entspricht. Externe CDN-Hosts werden nicht kopiert.
CSS-Scan
Section titled “CSS-Scan”Wird eine CSS-Datei kopiert, liest FG Static Export sie ein und sucht zusätzlich nach:
url(...)@import
So können beispielsweise Fonts oder Bilder aus Stylesheets mit in den Export gelangen.
Quelle der Dateien
Section titled “Quelle der Dateien”Referenzierte Asset-Pfade werden ausgehend von ABSPATH aufgelöst. PHP-Dateien werden nicht kopiert.
Für Dateien unter /wp-includes/ gilt eine explizite Allowlist mit statischen Dateitypen wie JavaScript, CSS, JSON, SVG, Rasterbildern, WebP, AVIF und gängigen Webfont-Formaten.
WordPress-Uploads
Section titled “WordPress-Uploads”Nach dem Seitenexport kopiert das Plugin zusätzlich den gesamten ermittelten Upload-Root rekursiv.
Die Quelle wird wie folgt bestimmt:
- Ist die Konstante
UPLOADSdefiniert, wird dieses Verzeichnis relativ zuABSPATHverwendet. - Andernfalls wird
wp_get_upload_dir()['basedir']verwendet, jedoch nur wenn das reale Verzeichnis innerhalb vonABSPATHliegt.
Dabei findet keine Erweiterungsfilterung statt. Alle Dateien im verwendeten Upload-Root werden rekursiv kopiert.
Vor einem öffentlichen Export sollte deshalb geprüft werden, ob das WordPress-Upload-Verzeichnis Dateien enthält, die nicht auf den statischen Zielserver übernommen werden sollen.
Liegt ein benutzerdefiniertes Upload-Verzeichnis außerhalb von ABSPATH, wird es durch diesen Fallback nicht kopiert.
Theme-Build-Verzeichnisse als Safety Net
Section titled “Theme-Build-Verzeichnisse als Safety Net”Für aktives Child-Theme und Parent-Theme prüft das Plugin folgende Unterverzeichnisse:
publicdistbuildassets
Liegt das Theme innerhalb von ABSPATH, werden dort Dateien mit einer internen Allowlist kopiert. Dazu gehören unter anderem CSS, JavaScript, Source Maps, JSON, SVG, PNG, JPEG, GIF, WebP, Fonts und ICO.
Die aktuelle Allowlist dieses Safety-Net-Schritts enthält kein AVIF. Direkt referenzierte AVIF-Dateien oder AVIF-Dateien aus dem Upload-Root können über andere Exportpfade dennoch in den Export gelangen. Diese Inkonsistenz ist intern zur Prüfung markiert.
Zusätzliche Dateien durch andere Plugins
Section titled “Zusätzliche Dateien durch andere Plugins”Andere Plugins können über fg_static_export_additional_files weitere statische Dateien bereitstellen.
Die Implementierung prüft diese Einträge unter anderem auf:
- relative Exportpfade
- Directory Traversal
- Windows-Laufwerks- und UNC-Pfade
- PHP-, PHTML- und PHAR-Endungen
- doppelte Zielpfade
- Symlinks am konkreten Ziel
- Zielverzeichnisse außerhalb des Export-Roots
.htaccess
Section titled “.htaccess”Wenn die Option aktiviert ist und ABSPATH . '.htaccess' existiert, kopiert das Plugin die Datei unverändert in das Export-Root.
FG Static Export prüft nicht, ob die enthaltenen Regeln für die statische Zielumgebung geeignet sind.