XAMPP Mod_Rewrite & динамический CSS
Я запускаю Apache на своем локальном компьютере (Mac) с включенным Mod_Rewite и Allowoveride All, установленным в файле httpd.conf XAMPP.
Это мои правила, фрагмент файла httpd.conf -
RewriteEngine On
RewriteRule ^/setup/css/userlayout.css /setup/css/userlayout.php
Alias /ms "/Users/web/wwwroot/ms"
<Directory "/Users/web/wwwroot/ms">
Options Indexes MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
В моем файле index.php у меня есть -
<link rel="stylesheet" type="text/css" href="setup/css/userlayout.css?u=1" />
И в моем файле userlayout.php есть -
<?php
header('Content-type: text/css');
echo "#test{background-color:#000;}";
?>
Это все, но правила ничего не делают. Я не уверен, что я помещаю правила в правильное место, и я понимаю, что вы можете сделать это в файле httpd.conf, а не в файле.htaccess.
2 ответа
Я понял, в чем проблема. Для настройки XAMPP требуется строка "Options +FollowSymLinks", чтобы mod_rewrite работал. Также это должно быть размещено внутри тега каталога, а не за его пределами, поскольку правила перезаписи работают для каждого каталога, поэтому я получаю сообщение об ошибке в директиве RewriteBase /.
Таким образом, полный код:
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine on
RewriteBase /root
RewriteRule ^setup/css/userlayout\.css$ setup/css/userlayout\.php
</IfModule>
RewriteRule ^/setup/css/userlayout.css$ /setup/css/userlayout.php
Вы можете увидеть больше о RewriteRule здесь.