URl使用htaccess文件重写和访问图像,脚本css和js

时间:2013-06-06 16:44:36

标签: image .htaccess mod-rewrite public

我需要在我的页面中访问图像,css和js文件,但我不知道需要写.htaccess文件。

我正在使用CodeIgniter。

我的文件夹层次结构:

   /cv
    |__ cartao_virtual
    |   |
    |   |__ cms
    |   |   |__ assets
    |   |   |   |
    |   |   |   |__ **css**
    |   |   |   |   |__ **images**
    |   |   |   |
    |   |   |   |__ **js**
    |   |   |   
    |   |   |__ controllers
    |   |   |__ models
    |   |   |__ views
    |   |   
    |   |__ site
    |       |__ assets
    |       |   |
    |       |   |__ css
    |       |   |   |__ images
    |       |   |
    |       |   |__ js
    |       |   
    |       |__ controllers
    |       |__ models
    |       |__ views
    |      
    |__ system
    |
    |__.htacess
    |__ site.php (default CodeIgniter index.php)
    |__ cms.php (default CodeIgniter index.php)

我目前的.htaccess是:

    RewriteCond $1 !^(cms\.php|cms|assets)
    RewriteRule ^cms$ cms.php [L]
    RewriteRule ^cms/(.*)$ cms.php/$1 [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ site.php/$1 [L]

有了它,我只能访问cms和站点控制器以及你的方法,我想保持这样。

我想象的是:

    RewriteEngine on
    RewriteCond $1 !^(cms\.php|cms)
    RewriteRule ^cms$ cms.php [L]
    RewriteRule ^cms/(.*)$ cms.php/$1 [L]

    RewriteCond $1 !^(^cms/assets|site/assets)
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ site.php/$1 [L]

    RewriteCond $1 !^(site/assets)
    RewriteRule ^site/assets/(.*)$ cartao_virtual\/site\/assets\/$1 [L]

    RewriteCond $1 !^(cms/assets)
    RewriteRule ^cms/assets/(.*)$ cartao_virtual\/cms\/assets\/$1 [L]

先谢谢。

1 个答案:

答案 0 :(得分:2)

您重写的任何地方(.*)您需要以下重写条件才能包含真实文件。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

现在,无论文件或目录是否存在,您都无意中重定向所有流量,但一条规则除外。