CodeIgniter重写URL:捕获404但忽略特定的文件夹和文件类型

时间:2012-08-04 16:36:54

标签: .htaccess codeigniter mod-rewrite

在我的CodeIgniter应用程序中,我使用特定的过程来捕获和处理404。这就是我想要它的方式。我想出了这个.htaccess文件来满足我的需求:

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{REQUEST_URI} ^system.*
    RewriteRule ^(.*)$ index.php?/$1 [L]

    RewriteCond %{REQUEST_URI} ^application.*
    RewriteRule ^(.*)$ index.php?/$1 [L]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

<IfModule !mod_rewrite.c>
    ErrorDocument 404 index.php
</IfModule>  

除了一个主要问题外,它的效果很好。 重定向种类一切。例如,假设我的最终输出引用了不存在的.css或.js文件。这将导致我的应用再次重新运行所有内容,当它实际上不需要时。

我的解决方法是忽略static文件夹(我项目的根目录 - 与index.php相同的文件夹)和每{{1}文件。但是,我真的不知道如何实现这一点,所以任何指向我的方向或建议都会受到高度赞赏。

1 个答案:

答案 0 :(得分:3)

添加另一个条件:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(static|(.*)\.css|(.*)\.js)

RewriteRule ^(.*)$ index.php?/$1 [L]

添加此行告诉.htaccess 处理静态目录内容。