2012-03-26 100 views
2

这是我目前的.htaccess文件:问题与的.htaccess和多个重写规则和条件

RewriteEngine On 

    RewriteCond %{REQUEST_FILENAME} -s [OR] 
    RewriteCond %{REQUEST_FILENAME} -l [OR] 
    RewriteCond %{REQUEST_FILENAME} -d 
    RewriteRule ^.*$ - [NC,L] 
    RewriteRule ^.*$ index.php [NC,L] 

    RewriteCond %{REQUEST_URI} .*jpg$|.*gif$|.*png$|.*css$|.*js$ [NC] 
    RewriteRule (^.*) http://d14t2ycfqndlt4.cloudfront.net/$1 [R=301, 

最后两行不工作,althouh当我删除上述第一COND,ID不工作...

是什么问题?谢谢!

+3

改变顺序! – undone 2012-03-26 13:19:33

+0

@Death我同意 - 只需将最后2行放在其他RewriteConds之前,您应该设置 – mikevoermans 2012-03-26 16:37:03

回答

2

像这样的东西应该工作:

RewriteEngine On 

RewriteCond %{REQUEST_URI} (.*)\.(jpg|gif|png|css|js)$ [NC] 
RewriteRule (.*) http://d14t2ycfqndlt4.cloudfront.net/$1 [R=301,...] 

RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule (.*) - [NC,L] 

RewriteRule (.*) index.php [NC,L] 

注意正则表达式是有点更容易理解。

0

这是你的纠正和清理.htaccess代码:

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

RewriteRule \.(?:jpg|gif|png|css|js)$ http://d14t2ycfqndlt4.cloudfront.net%{REQUEST_URI} [R=301,L,NC] 

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