web-dev-qa-db-ja.com

を使う PHP スタイルシートの中で(おそらく ".htaccess"問題?)

(収集したものから)比較的頻繁に尋ねられる質問をして申し訳ありませんが、私は自分のスキルが錆びてきた後にプロジェクトを離れてから戻ってくることで問題を複雑にしたと思います。それで、私が友人のために少し前に作成した非常に基本的なテーマで、私はスタイルシートでPHPを使用していくつかの変数を作成し、特定の要素の色をランダムにできるようにしました。私がこれを達成した方法はスタイルシートをstyle.php(CSSとは対照的に)と名付けることであり、そしてファイルの先頭に<?php header("Content-type: text/css; charset: UTF-8"); ?>を含めました。

これは当時はうまくいきましたが、私がそれを完成してから、私の友人は彼らのウェブサイトを使うのをやめて、私は自分の個人的なサイトのためにテーマを使うことにしました。 ManagedWP GoDaddyアカウントを取得してテーマをアップロードしましたが、現在はnotworkingです。ここで問題の診断に問題があるのです。私にとって最も明白な問題は、WordPressがPHPスタイルシートを使用することを好まなくなっていることです。そのため、スタイルシートの名前をstyle.cssに変更し、.htaccessを修正してPHPとして解析しました。 .htaccessを修正することは私にとって新しいことです、そこで私はそこで何か愚かなことをしているかもしれません、しかし私はガイドとして this 記事を使い、そして今テーマのディレクトリの.htaccessを使います(style.cssと同じディレクトリレベル) )そのように読む:

# 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>

しかし、WordPressがPHPスタイルシートを使用しても問題ないように思えたときと同じ結果にはまだ到達していません。正しい質問が何を求めているのか迷っています。私はこれの大部分が私のステップを遡ることであるという感じを持っています、しかし私はどちらの方向に進むべきかわかりません!任意の助けは大歓迎です!

2
GoodTimeHaver

ご希望の機能をjavascriptに移行することをお勧めします。あなたはこれらの構成要素の目的をあまりにも過負荷にしようとしています...たとえそれがうまく動くようになったとしても、あなたは自分の手でシステムを非常に壊れやすくそして維持するのが難しいでしょう。

インラインスタイルのアイデアはうまくいくかもしれないことに注意してください - しかし将来のコンテンツセキュリティポリシーはそのアイデアを殺すかもしれません...インラインCSSは弱点です。詳しくは OWASPの説明 を参照してください。

2
C C

Wordpressの人生のこの時点でそれはあなたがやるべきではないということです(そしてそもそもしてはいけませんでした)。経験上、この種のCSSファイルは非常に壊れやすいものであり*、ワードプレス関連のサーバー設定がVanillaのものではない場合には簡単に壊れることがあります。

wp_headフックを使用して、あなたのテーマのインラインスタイルとして必要なものを追加するだけです。 (いや、誰かがインターネット上のすべてのサイトを壊したくないのであれば、彼らは弱点ではなく、将来的に殺されることはないだろう)

*この種のファイルはセキュリティ上の問題があることが知られており、ディレクトリ構造が変更されると壊れる

2
Mark Kaplun

(あなたは何らかの理由で2つのWordPressコードブロックを持っているように見えます...?!私はあなたの質問でそれがある種のコピー/ペーストエラーであると思いますか?)

そしてテーマのディレクトリ(style.cssと同じディレクトリレベル)の.htaccessは次のようになります。

別のディレクトリに複数の.htaccessファイルを作成すると、より多くの問題が発生する可能性があります。 (WPフロントコントローラを複製したのはこのためですか?)ドキュメントルートのメインの.htaccessファイルに適切なディレクティブを追加する必要がありますが、順序には注意してください。

wordPressがPHPスタイルシートを使うのを好まないようにしている理由

WordPressはPHPスタイルシートを使っても問題ないようでした

WordPress自体はCSS/PHPファイルとは関係ないはずです。しかし、あなたの "ManagedWP"ホスティングは、これらの "不正な"(あるいはWordPress以外の)PHPファイルの解析を妨げている追加のセキュリティを持っているかもしれません。

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

PHPのようにWordの "style"を含むすべてのファイルを解析すると、問題を引き起こす可能性があります。ただし、SetHandlerを使用するとサーバー固有の問題が発生する可能性があるため、これは機能しない可能性があります。

別の方法はstyle.phpという名前のファイルを保持することです(つまり、.phpファイル拡張子を付けて)が、これをHTMLのstyle.cssとして参照します。次に、.htaccessでmod_rewriteを使用して、style.cssに対する要求をWordPressフロントコントローラーのstyle.phpbeforeに書き換えます。

例えば:

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

(Stress ...これはWordPressのフロントコントローラーをbeforeにする必要があります。)

1
MrWhite