Skip to content

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.

Das gerenderte und bereits auf die Ziel-URL umgeschriebene HTML wird auf folgende Quellen untersucht:

  • src
  • href
  • data-src
  • data-background
  • srcset
  • url(...) in doppel-quoted Inline-Styles
  • zitierte lokale URLs auf .css, .js oder .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.

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.

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.

Nach dem Seitenexport kopiert das Plugin zusätzlich den gesamten ermittelten Upload-Root rekursiv.

Die Quelle wird wie folgt bestimmt:

  1. Ist die Konstante UPLOADS definiert, wird dieses Verzeichnis relativ zu ABSPATH verwendet.
  2. Andernfalls wird wp_get_upload_dir()['basedir'] verwendet, jedoch nur wenn das reale Verzeichnis innerhalb von ABSPATH liegt.

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.

Für aktives Child-Theme und Parent-Theme prüft das Plugin folgende Unterverzeichnisse:

  • public
  • dist
  • build
  • assets

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.

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

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.