将所有请求重定向到index.php,但/ files子目录除外

时间:2013-01-17 21:30:50

标签: apache .htaccess mod-rewrite

到目前为止,我对.htaccess文件知之甚少。我想将所有请求重定向到我的根文件夹中的一个index.php文件,除非url链接到存在且位于files文件夹中的文件。 (例如example.com/files/picture.png)我想通过根目录中的htaccess文件实现这一点,如果需要,可以在files目录中实现一个。此外,我不想显示拒绝许可的消息。

现在我有了这个:

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

但是如果url引用的文件存在,它不会将一个重定向到index.php文件。有帮助吗?我在互联网上寻找但却找不到任何东西。

1 个答案:

答案 0 :(得分:5)

这样的事情:

RewriteEngine on

RewriteCond %{REQUEST_URI}  /img/.+(gif|png|jpg)$
RewriteRule .* - [L]

RewriteCond %{REQUEST_URI}  /css/.+(css|png)$
RewriteRule .* - [L]

RewriteCond %{REQUEST_URI}  /js/.+css$
RewriteRule .* - [L]

RewriteCond %{REQUEST_URI}  /js/.+(js|htm)$
RewriteRule .* - [L]

RewriteCond $1 !^(index\.php|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

除css javascript和图像文件外,所有请求都将通过index.php文件。这个.htaccess文件我用于codeigniter框架,所以它可能会因你的情况而略有不同。