如何编写.htaccess来访问不同环境中的多个CodeIgniter项目?

时间:2013-10-08 05:24:40

标签: regex .htaccess codeigniter mod-rewrite

我在两个独立的子目录中运行了两个CodeIgniter v2.1.4项目,即 dev prod 。以下是文件结构:

/ (root)
.htaccess (01)
  - dev
      - .htaccess (02)
      - application
      - system
      - assets
          - js
          - css
          - img
  - prod
      - .htaccess (03)
      - applications
      - system
      - assets
          - js
          - css
          - img

我想做的是

  • 如果用户访问 www.abc.com ,用户将被重定向到 www.abc.com/prod ,在网址中隐藏 prod
  • 如果用户访问 www.abc.com/prod ,用户将被重定向到 www.abc.com/prod prod 是显示在网址中。
  • 如果用户访问 www.abc.com/dev ,用户将被重定向到 www.abc.com/dev ,无需隐藏 dev < / b>在网址中。

以下是 .htaccess(01)

RewriteEngine On
RewriteBase /prod
RewriteRule ^(.*)$ /prod/index.php?/$1 [L]

.htaccess(02)

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|assets|robots\.txt|changelog\.html)
RewriteRule ^(.*)$ /dev/index.php?/$1 [L]

.htaccess(03)

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|assets|robots\.txt|changelog\.html)
RewriteRule ^prod/(.*)$ /prod/index.php?/$1 [L]

问题:现在不起作用的是资产文件夹中的文件必须在要加载的网址中包含 dev prod ,例如

  • www.abc.com/prod/assets/js/jquery.js✔它有效!
  • www.abc.com/assets/js/jquery.js ×失败......

1 个答案:

答案 0 :(得分:0)

下面应该是你的.htaccess(01)

RewriteEngine On

RewriteRule ^(assets/.*)$ /prod/$1 [L,NC]

RewriteRule !^prod/ /prod/index.php?%{REQUEST_URI} [L,NC]

您可以按原样保留其余代码。