【发布时间】:2011-03-29 09:32:38
【问题描述】:
所以我在我的家庭服务器 (Ubuntu 9.1) 上设置 SVN,并希望能够立即查看对我的 CodeIgniter 应用所做的任何更改。
所以,我的工作副本位于 /home/myname/environments/development/appname。
可以通过 dev.appname.myname.ca 访问我的 Vhost,配置如下所示:
DocumentRoot /home/myname/environments/development/
ServerName dev.myname.ca
ServerAlias dev.*.myname.ca
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.* [NC]
RewriteCond %{HTTP_HOST} ^dev.([^\.]+)\.myname\.ca
RewriteCond /home/myname/environments/development/%1/trunk/ -d
RewriteRule ^(.*) /%1/trunk/public/$1
因此,转到 dev.appname.myname.ca 将指向 /home/myname/environments/development/appname/trunk/public。
现在,这是一个 CodeIgniter 应用程序,我需要将所有请求从 public/ 重定向到 public/index.php,因此 public/ 中的 .htaccess 文件如下:
RewriteEngine On
RewriteCond $1 !^(index\.php)
RewriteRule ^(.*)$ index.php/$1 [L]
我将这部分放在 .htaccess 文件中,因为在实时生产站点上,我无法访问服务器配置,因此我需要覆盖它。
现在的问题是我得到一个重定向循环,最终出现 500 错误。
来自 /var/log/apache2/error.log:
redirected from r->uri = /appname/trunk/public/index.php/appname/trunk/public/index.php/appname/trunk/public/index.php/appname/trunk/public/index.php/appname/trunk/public/index.php/appname/trunk/public/index.php/appname/trunk/public/index.php/
如何将请求重定向到正确的 public/ 目录(在本例中为 /home/myname/environments/development/appname/trunk/publc),然后将所有请求从 public/ 定向到 public/index.php?
我知道这是一个冗长的问题 - 感谢您的帮助。 :)
【问题讨论】:
标签: apache codeigniter loops mod-rewrite infinite