在我的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}文件。但是,我真的不知道如何实现这一点,所以任何指向我的方向或建议都会受到高度赞赏。
答案 0 :(得分:3)
添加另一个条件:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(static|(.*)\.css|(.*)\.js)
RewriteRule ^(.*)$ index.php?/$1 [L]
添加此行告诉.htaccess 不处理静态目录内容。