我的mod_rewrite没有忽略现有文件

时间:2014-07-18 18:12:19

标签: php apache .htaccess mod-rewrite

使用PHP编写CMS并使用Apache .htaccess进行重定向。我有一个像这样的文件系统:

/MySites [dir]
    /MySite1.com [dir]
        /css [dir]
            style.css [file]
        /pages [dir]
    /MySite2.com [dir]
    compiler.php [file]

我的.htaccess文件如下所示:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) compiler.php?id=$1 [L]
RewriteRule ^(.*)/ compiler.php?id=$1 [L]

//localhost/MySites/MySite1.com/home(无.htm)转到compiler.php?id=MySite1.com/home。良好...

//localhost/MySites/MySite1.com/css/style.css等现有文件也会被重定向:compiler.php?id=MySite1.com/css/style.css。坏...

RewriteRule的错误是什么?

1 个答案:

答案 0 :(得分:2)

RewriteCond仅适用于下一个RewriteRule,而不适用于两者。因此,您的第二条规则是重写与模式^(.*)/相匹配的所有内容。