rewritecond不适用于现有文件

时间:2014-10-15 09:35:03

标签: apache .htaccess mod-rewrite

我有一个mod重写问题apache似乎忽略了重写cond。

重写规则正在运行,因为我的所有页面都在工作,但问题在于css,imgs和js等资源。在我的HTML中,我使用"href=assets/css/style.css"这是一个现有的文件,但我在我的index.php上重定向...

我做错了吗?

这是我的vhost配置

<VirtualHost *:*>
    ServerAdmin me@local.loc
    DocumentRoot "c:/wamp/www/Covoiturage"
    ServerName covoiturage.loc
    ErrorLog "logs/covoiturage-error.log"
    CustomLog "logs/covoiturage-access.log" combined
    <directory c:/wamp/www/covoiturage/>
        Allow from all
        AllowOverride all
    </directory>
</VirtualHost>

这是我的htaccess:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ /$1 [R=301,L]
RewriteRule ^ index.php [L]

1 个答案:

答案 0 :(得分:3)

您要将RewriteCond添加到错误的RewriteRuleRewriteCond仅对下一个RewriteRule有效。试试这段代码:

RewriteEngine On

## Unless directory, remove trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ $1 [R=302,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [L]