2

我在本地计算机 (mac) 上运行 Apache,启用了 Mod_Rewite 并在 XAMPP 的 httpd.conf 文件中设置了 Allowoveride All。

这些是我的规则,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 文件中执行此操作。

4

2 回答 2

1

重写规则 ^/setup/css/userlayout.css$ /setup/css/userlayout.php

您可以在此处查看有关 RewriteRule的更多信息。

于 2009-07-25T06:11:24.170 回答
0

我弄清楚了问题所在。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>
于 2009-07-26T05:51:41.177 回答