HOW TO:为每个应用程序重写对图像,css和js的请求到不同的文件夹?

时间:2009-06-29 02:01:52

标签: apache mod-rewrite codeigniter

我正在尝试构建一个多应用程序CodeIgniter站点,其中所有应用程序的资产将存储在名为“assets”的单个文件夹中。在此单个文件夹中,每个应用程序都有自己的资产文件夹。所以,如果这是我的根目录...

 user_guide
 apps_folder (this is where all my application folders live)
 system
 assets

...资产文件夹将按此组织:

assets
  myapp1
      js
      img
      css
      media

这是我的挑战。我正在尝试编写一个apache指令,该指令将所有以css,js,png和gif结尾的文件请求重写到该应用程序的相应资产目录中。但是用户无法知道服务器中这些资产的确切位置。举个例子:

以下是请求:www.myapp1.com/js/jquery.js

该文件位于:assets / myapp1 / js

指令将检查 a)域名地址 b)文件扩展名

...并且基于这些变量,将重写网址,从而隐藏资产的真实位置,并且可以引用资产,就好像它们都位于网站的根目录一样。有没有人做过这样的事情?

感谢,

2 个答案:

答案 0 :(得分:3)

这是完全可能的。请参阅Apache重写指南:

http://httpd.apache.org/docs/1.3/misc/rewriteguide.html

您的规则将如下所示:

RewriteCond   %{HTTP_HOST}  \.myapp1\.com$
RewriteRule  ^/js/(.*)\.js$ assets/myapp1/js/$1

玩得开心!

答案 1 :(得分:1)

您可以使用AliasMatch

<VirtualHost myapp1>
   AliasMatch ^(.*\.)(js|css)$ /path/to/assets/myapp1$1$2
</VirtualHost>