代码之家  ›  专栏  ›  技术社区  ›  Hailwood

使用.htaccess mod_rewrite将深度目录结构绕过CSS资产

  •  0
  • Hailwood  · 技术社区  · 15 年前

    我有这样的安排

    http://localhost/
    http://localhost/ci_tada/
    http://localhost/ci_tada/application
    http://localhost/ci_tada/application/views
    http://localhost/ci_tada/application/views/css
    http://localhost/ci_tada/application/views/css/master.css

    我不想写

    http://localhost/ci_tada/application/views/css/

    每次我想访问一个css文件(同样适用于图片等)

    我只想用 http://localhost/ci_tada/css/master.css

    并让它加载正确的文件。

    .htaccess文件位于ci_tada文件夹中。

    2 回复  |  直到 14 年前
        1
  •  0
  •   eagleal    15 年前

    看起来你在框架中使用了某种路由。你应该检查一下,因为有些框架提供了在应用程序配置中进行检查的选项。

    <IfModule mod_rewrite.c>
    RewriteEngine On
    
    # directory base, untogle if you want to
    # rewrite only starting from /<directory/path>
    # RewriteBase /
    
    RewriteRule ^/css/(.*)$ index.php/ci_tada/application/views/css/$1 [PT,L]
    #or RewriteRule ^/(.*)/css(.*)$ index.php/$0/views/css$1 [PT,L]
    #or RewriteRule ^/(.*)/css/(.*)$ index.php/$0/views/css/$1 [PT,L]
    
    </IfModule>
    

    注意最后两个重定向路径中包含/css/的所有内容。


    编辑:1:在CI中(从我所读的内容来看)最好在根目录上设置一个静态目录,如下所示:

        /
        .../static
        ......./css
        ......./js
        .../application
        ......./controller
        .../...
    
    

    这样您就可以在视图中直接使用/static/css/file.css。如果有帮助,也可以查看这些资源:

        2
  •  0
  •   Satya Prakash    15 年前

    我觉得你说的是Zend框架。你的几句台词是

    /

    /应用程序

    如何将每个请求重定向到CSS/?那你的申请就不行了!

    在Zend框架application/layouts/scripts/layout.phtml中,您提到的css文件如下:

    <?php echo $this->headLink()->prependStylesheet($this->baseUrl().'/css/site.css'); ?>
    

    Css文件进入项目文件夹。它位于应用程序文件夹之外: \快速入门2\public\css。

    希望我不会收到我的答复。

    推荐文章