我有这个.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文件夹中我有一个看起来像的重写文件:
#$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'];
我试过的其他内容
答案 0 :(得分:1)
你的rewriterule正在循环。
由于您将CSS文件的名称传递给PHP脚本,因此最终会出现以下内容:
... / css / rewrite.php?file = test.css&lt; - 它再次匹配你的重写。
如果从css文件夹
中删除rewrite.php会更容易答案 1 :(得分:0)
PHP脚本没有获取目录css
,因此它正在寻找/default.css而不是/css/default.css; - )
答案 2 :(得分:0)
我在rewrite.php文件的顶部添加了这个,现在它可以工作了! :d
header('Content-type: text/css');