it-swarm.com.de

Verwenden PHP in einem Stylesheet (möglicherweise ein ".htaccess" -Problem?)

Es tut mir leid, eine Frage zu stellen, die (nach dem, was ich gesammelt habe) relativ häufig gestellt wurde, aber ich glaube, ich habe das Problem dadurch erschwert, dass ich ein Projekt verlassen und dann darauf zurückgekommen bin, nachdem meine Fähigkeiten verrostet sind. In einem sehr einfachen Thema, das ich vor einiger Zeit für einen Freund erstellt habe, habe ich PHP im Stylesheet verwendet, um einige Variablen zu erstellen, damit die Farben bestimmter Elemente zufällig ausgewählt werden können. Dies gelang mir, indem ich das Stylesheet style.php (im Gegensatz zu CSS) nannte und <?php header("Content-type: text/css; charset: UTF-8"); ?> am Anfang der Datei einfügte.

Das hat zu der Zeit super geklappt, aber seit ich es fertiggestellt habe, hat meine Freundin ihre Website nicht mehr benutzt und ich habe beschlossen, das Thema für meine eigene persönliche Website zu verwenden. Ich habe ein ManagedWP GoDaddy-Konto und habe das Design hochgeladen, aber jetzt funktioniert es nicht . Hier habe ich Probleme, das Problem zu diagnostizieren. Das offensichtlichste Problem für mich ist, dass WordPress nicht länger ein PHP Stylesheet verwenden möchte. Daher habe ich versucht, das Stylesheet in style.css umzubenennen und dann .htaccess zu ändern, um es zu ändern analysiert als PHP. Das Ändern von .htaccess ist eine neue Sache für mich, daher mache ich vielleicht etwas Dummes, aber ich verwende this als Anleitung und jetzt den .htaccess im Verzeichnis des Themas (dieselbe Verzeichnisebene wie style.css). ) lautet wie folgt:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

<FilesMatch "^.*?style.*?$">
SetHandler php5-script
</FilesMatch>

Ich erreiche jedoch immer noch nicht das gleiche Ergebnis wie zuvor, als WordPress mit der Verwendung eines PHP Stylesheets zufrieden zu sein schien, und ich weiß nicht, was die richtigen Fragen sind. Ich habe das Gefühl, dass ein großer Teil davon darin besteht, meine Schritte zurückzuverfolgen, aber ich bin mir nicht sicher, in welche Richtung ich gehen soll! Jede Hilfe wäre sehr dankbar!

3
GoodTimeHaver

Schlagen Sie vor, dass Sie die gewünschte Funktionalität auf Javascript umstellen. Sie versuchen so sehr, den Zweck dieser Konstrukte zu überlasten ... selbst wenn Sie sie zum Laufen bringen, werden Sie ein sehr zerbrechliches und schwierig zu wartendes System in Ihren Händen haben.

Beachten Sie, dass die Idee des Inlining-Stils möglicherweise funktioniert - aber zukünftige Richtlinien zur Inhaltssicherheit können diese Idee zunichte machen ... Inline-CSS ist eine Schwachstelle. Weitere Informationen finden Sie in dieser OWASP-Erklärung .

2
C C

An diesem Punkt im WordPress-Leben sollten Sie es einfach nicht tun (und sollten es überhaupt nicht getan haben). Die Erfahrung zeigt, dass diese Art von CSS-Datei sehr zerbrechlich ist * und leicht kaputt geht, wenn das WordPress-bezogene Server-Setup nicht das Vanilla-Setup ist, was wahrscheinlich für alle verwalteten Dienste zutrifft.

Fügen Sie einfach alles, was Sie möchten, als Inline-Stil in Ihr Design ein, indem Sie den Haken wp_head verwenden. (Nein, sie sind keine Schwachstelle und werden auch in Zukunft nicht getötet, es sei denn, jemand möchte alle Websites im Internet zerstören.)

* Diese Art von Dateien hatte bekanntermaßen Sicherheitsprobleme und brach ab, wenn sich die Verzeichnisstruktur änderte

2
Mark Kaplun

(Sie scheinen aus irgendeinem Grund 2 WordPress-Codeblöcke zu haben ...?! Ich nehme an, das ist eine Art Kopier-/Einfügefehler in Ihrer Frage?)

und jetzt lautet der .htaccess im themenverzeichnis (dieselbe verzeichnisebene wie style.css) wie

Das Erstellen mehrerer .htaccess -Dateien in verschiedenen Verzeichnissen kann zu weiteren Problemen führen. (Haben Sie aus diesem Grund den Front-Controller WP dupliziert?) Sie sollten die relevanten Anweisungen zur Hauptdatei .htaccess im Dokumentenstamm hinzufügen, aber achten Sie auf die Reihenfolge.

aus irgendeinem Grund ist WordPress nicht mehr mit der Verwendung eines PHP Stylesheets vergleichbar
:
WordPress schien gut mit einem PHP Stylesheet zurechtzukommen

WordPress selbst sollte nichts mit der CSS/PHP-Datei zu tun haben. Ihr "ManagedWP" -Hosting verfügt jedoch möglicherweise über eine zusätzliche Sicherheit, die verhindert, dass diese "falschen" (oder eher nicht von WordPress stammenden) PHP Dateien analysiert werden.

<FilesMatch "^.*?style.*?$">
SetHandler php5-script
</FilesMatch>

Das Parsen aller Dateien, die lediglich den Word-Stil PHP enthalten, kann möglicherweise Probleme verursachen. Die Verwendung von SetHandler kann jedoch sehr serverspezifisch sein, sodass dies möglicherweise trotzdem nicht funktioniert.

Eine Alternative besteht darin, die Datei mit dem Namen style.php (dh mit der Dateierweiterung .php) beizubehalten, dies jedoch in Ihrem HTML-Code als style.css zu kennzeichnen. Verwenden Sie dann mod_rewrite in .htaccess, um eine Anforderung für style.css intern in style.php vor den WordPress-Front-Controller umzuschreiben.

Zum Beispiel:

RewriteRule ^url-path/to/style\.css$ /filesystem-path/to/style.php [L]

(Stress ... das muss gehen vor dem WordPress Front-Controller.)

1
MrWhite