子域和htaccess上的CodeIgniter

sou*_*ver 0 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]
Run Code Online (Sandbox Code Playgroud)

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

Ulr*_*lha 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]
Run Code Online (Sandbox Code Playgroud)

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

编辑

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

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

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

您的RewriteRule模式^(.*)$将匹配所有输入并将重写为.然后将再次运行.htaccess规则