1

.lessすべてのファイルを php ファイルにルーティングして処理しようとしています。php ファイルは.lessファイルの URL を取得し、processed を返しますtext/css

.htaccesファイルに次の行があります。

Options +FollowSymLinks +ExecCGI

<IfModule mod_rewrite.c>

RewriteEngine On
RewriteCond %{REQUEST_URI}  (\.less)$
RewriteRule (.*)  renderless.php?url=$1 [QSA]

</IfModule>

上記は期待どおりに機能し、.lessファイルを php にルーティングします。

この行を使用してphpでURLを取得しています(完全なコードはこちら):

$file = $_SERVER['HTTP_HOST'] . '/' . $_GET['url'];

// .. some lines later

$css = file_get_contents( $file );

しかし!less ファイルが見つからないため、php はエラーをスローします。

load error: failed to find local.mysite.com/css/main.less' in ...

パスを手動で送信すると、php プロセッサが動作します。

  • ファイルで何か間違ったことをしていhtaccessますか?
  • 問題はphpにありますか?
4

1 に答える 1

2

ここに追加するだけですhttp://

$file = "http://" . $_SERVER['HTTP_HOST'] . '/' . $_GET['url'];

または、ファイルシステムから読み取る:

$file = $_SERVER["DOCUMENT_ROOT"] . '/' . $_GET["url"];

ところで、書き換えルールもはるかに簡単になります。

RewriteEngine On
RewriteRule ^(.+?\.less)$ /renderless.php?url=$1 [L,QSA,NC]
于 2013-10-16T13:09:08.673 に答える