【发布时间】:2011-03-15 00:42:04
【问题描述】:
我有这个 .htaccess 文件:
Options +FollowSymLinks
Options +Indexes
RewriteEngine On
RewriteBase "/d/IT2 Tryggheim/it prosjekt 2011 - 2. termin/css/"
RewriteRule ^css/(.*\.(css|less))$ rewrite.php?file=$1 [NC]
在 css 文件夹中,我有一个 rewrite.php 文件,如下所示:
#$file = $_GET['file'];
$file = dirname($_SERVER['SCRIPT_FILENAME']) . '/' . $_GET['file'];
if(file_exists( $file ))
{
$content = file_get_contents($file);
# TODO: add code that parses the $content variable
echo $content;
}
else
{
echo "Weeeee! The file (<i>$file</i>) does not exist! :D <br /> <br />";
}
这一切都在 Wampserver 上进行了测试。如果我直接走这条路,它就可以工作:
http://localhost/d/IT2%20Tryggheim/it%20prosjekt%202011%20-%202.%20termin/css/deafult.css
但是,如果我有一个文件,一个包含以下 HTML 的目录,则它不起作用:
<link rel="stylesheet" type="text/css" href="css/deafult.css" />
或者,除非我禁用 .htaccess,否则它不起作用,然后它就起作用了。那么如何让php加载文件呢?
我尝试过但不起作用的 $file 替代方案
$file = dirname($_SERVER['SCRIPT_FILENAME']) . '/css/' . $_GET['file'];
$file = '/css/' . $_GET['file'];
$file = 'css/' . $_GET['file'];
$file = './css/' . $_GET['file'];
我尝试过的其他东西
- 尝试使用 include 而不是 file_get_contents
- 尝试在文件名 ('deafult.css') 中进行硬编码,而不是使用 $_GET 变量
【问题讨论】:
-
你让它变得不必要的复杂。你为什么不写下原来的问题?你可以得到一个简单的解决方案。
-
原来的问题:我想用一个php文件来解析css和less文件。较少的文件将被转换为 css。并且 css 和 less 都应该被压缩。此外,我可能想根据某些用户设置(通过用户希望在其中显示网页的调色板中选择)将 less 文件中的一些变量替换为其他值。
标签: php mod-rewrite file-get-contents