2

我正在尝试通过 mod_rewrite 将 LESS 文件传递​​给 PHP 编译器 - 当请求 LESS 文件时,该文件应重定向到 PHP 脚本,传递它的路径/名称,以便可以吐出 CSS 文件。

HTML:

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

.ht 访问:

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 栏中,而不是站点的页面。

我究竟做错了什么?

编辑:还有更好的方法来做我想做的事情吗?

编辑2:

/v2/

--index.php

--.htaccess

--/样式/

----main.less

----main.less.css

--/编译器/

----lessphp.php

4

2 回答 2

0

现在发生的情况是您的浏览器在编译完成之前请求第二个链接,并且您的 Web 服务器返回 404,因为该*.less.css文件尚不存在。

更好的方法是让您的 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 响应
  • 第二个<link>根本不再需要
于 2012-08-16T21:48:00.670 回答
0

好的,想通了这个问题。真的很简单。

玩弄更改扩展名之类的东西,试图弄清楚为什么图像会自由更改,但 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 回答