У меня есть файл .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
3 ответа
Я добавил это в начало файла rewrite.php, и теперь он работает! : D
header('Content-type: text/css');
Ваша rewriterule зацикливается.
Поскольку вы передаете имя файла CSS в свой PHP-скрипт, вы получаете что-то вроде:
... / css / rewrite.php? file = test.css <- он снова соответствует вашему rewriterule.
Было бы проще, если бы вы удалили rewrite.php из папки css
Скрипт PHP не получает каталог css
, поэтому он ищет /default.css вместо /css/default.css ;-)
include
Похожие вопросы
Новые вопросы
php
PHP — это открытый, мультипарадигмальный, динамически типизированный и интерпретируемый язык сценариев, изначально разработанный для веб-разработки на стороне сервера. Используйте этот тег для вопросов о программировании на языке PHP.