我正在尝试将所有.less
文件路由到要处理的php文件。php 文件获取.less
文件 url 并返回已处理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 );
但!php 抛出错误,因为它找不到更少的文件:
load error: failed to find local.mysite.com/css/main.less' in ...
如果我手动发送路径,php 处理器可以工作。
- 我在
htaccess
文件中做错了什么吗? - 问题出在 php 中吗?
你只需要在这里添加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]