子域和htaccess上的CodeIgniter

时间:2012-02-08 16:49:32

标签: apache .htaccess codeigniter

我正在尝试基于CodeIgniter设置网站。 对于开发我想要domain dev.XXX.com

我更改了我的结构,因此我有一个no_www和一个public_www文件夹。 两者都在dev.XXX.com

的根目录中

所以我的想法是重写url的表单

dev.XXX.com/index.php/test

dev.XXX.com/public_www/index.php/test

所以我只想为所有请求添加public_www

在我的htaccess文件中,我有:

RewriteRule ^(.*)$ /public_www/$1 [L]

但我总是得到500 - 内部服务器错误

1 个答案:

答案 0 :(得分:5)

尝试将以下内容添加到您网站的根目录.htaccess中的public_www文件中。

RewriteEngine on
RewriteBase / 

#if its on dev.xxx.com
RewriteCond %{HTTP_HOST} ^dev\.XXX\.com$ [NC] 
#if its not already public_www/ rewrite to public_www/
RewriteRule ^(?!public_www/)(.*)$ /public_www/$1 [L,NC]

您的规则将导致无限重写和随后的500错误。上面的那个应该可以防止这种情况。

修改

  

你能解释为什么我的版本会导致无限循环

我可能对无限循环不正确,但下面是将要发生的事情

  1. 从任何输入开始
  2. ^(.*)$模式将匹配任何输入
  3. 它将重写为/public_www/$1
  4. .htaccess规则将再次运行
  5. ^(.*)$模式将匹配重写的输入/public_www/$1
  6. 它将重写为/public_www/public_www/$1
  7. 此时它可能会因目录不存在而失败...
  8. 您的RewriteRule模式^(.*)$将匹配所有输入并将重写为。然后将再次运行.htaccess规则