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 здесь.

Другие вопросы по тегам