2

mod_rewrite を介して LESS ファイルを PHP コンパイラに渡そうとしています。

HTML:

<link rel="stylesheet/less" type="text/css" href="styles/main.less" />
<link rel="stylesheet" type="text/css" href="styles/main.less.css" />

.htaccess:

RewriteEngine On
RewriteBase /v2/
RewriteRule ^([^.]*\.less)$ compilers/lessphp.php?file=$1 [R,L,NC]

最初は、.less ファイルしかありません。

「http://mydomain.com/v2/」を更新すると、スタイルのないコンテンツになります。/styles/ に .css ファイルは作成されません。

「http://mydomain.com/v2/styles/main.less」にアクセスすると、PHP コンパイラ「http://mydomain.com/v2/compilers/lessphp.php?file=styles」にリダイレクトされます。 /main.less'、および 'main.less.css' が /styles/ 内に作成されます。「http://mydomain.com/v2/」に戻ると、コンテンツのスタイルが設定されています。

書き換えは、サイトのページではなく、ブラウザーの URL バーでのみ発生しています。

私は何を間違っていますか?

編集:私がやろうとしていることを行うためのより良い方法もありますか?

EDIT2:

/v2/

--index.php

--.htaccess

--/スタイル/

----main.less

----main.less.css

--/コンパイラ/

----lessphp.php

4

2 に答える 2

0

OK、問題を理解しました。本当にシンプルです。

拡張子の変更などをいじって、画像が自由に変更される理由を理解しようとしましたが、CSS はそうではなく、ファイルの種類などに関係があるのではないかと思いました。このとき、次のことに気付きました

<link rel="stylesheet/less" type="text/css" href="styles/main.less" />

rel="stylesheet/less"ここでの犯人であり、less.js によってクライアント側のレンダリングに使用されます。rel="stylesheet"通常の CSS ドキュメントのように単純に置き換えると、Everything. ただ。働いた。


編集:ここでLessphp を適切に動作させるためのランスルーを書きました

于 2012-08-16T23:25:23.567 に答える
0

現在起こっていることは、コンパイルが完了する前にブラウザーが 2 番目のリンクを要求し、*.less.cssファイルがまだそこにないため、Web サーバーが 404 を返すことです。

これを行うためのより良い方法は、PHP スクリプトがコンパイル結果 (実際の CSS など) を応答として出力するようにすることです。ファイルも生成するかどうか*.less.cssは関係ありませんが、おそらく CSS 出力をキャッシュしたいので、LESS はすべてのリクエストでコンパイルされるわけではありません。

言い換えると:

  • <link rel="stylesheet/less" type="text/css" href="styles/main.less" />mod_rewrite 経由でリダイレクトしますcompilers/lessphp.php?file=styles/mail.less
  • 上記のスクリプトは、実際にコンパイルされた CSS を HTTP 応答として返します。
  • 2番目<link>はもう必要ありません
于 2012-08-16T21:48:00.670 に答える