Проблема mod_rewrite & file_get_contents - PullRequest
0 голосов
/ 14 марта 2011

У меня есть этот файл .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'];

Otherчто я пробовал

  • Пробовал использовать include вместо file_get_contents
  • Пробовал жесткое кодирование в имени файла ('deafult.css') вместо использования переменной $ _GET

Ответы [ 3 ]

1 голос
/ 14 марта 2011

Ваш rewriterule зацикливается.

Поскольку вы передаете имя CSS-файла в ваш PHP-скрипт, вы получите что-то вроде:

... / css / rewrite.php? File = test.css <- снова соответствует вашему rewriterule. </p>

Было бы проще, если бы вы удалили rewrite.php из папки css

0 голосов
/ 14 марта 2011

Я добавил это в начало файла rewrite.php, и теперь оно работает! : D

header('Content-type: text/css');
0 голосов
/ 14 марта 2011

PHP-скрипт не получает каталог css, поэтому он ищет /default.css вместо /css/default.css; -)

...