如何处理通过服务器路由接收的 php 文件


How to process a file in php received through server routing?

我正在尝试将所有.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]