所以我在我的家庭服务器(Ubuntu 9.1)上设置了 SVN,并希望能够立即查看对我的 CodeIgniter 应用程序所做的任何更改。
因此,我的工作副本位于 /home/myname/environments/development/appname 中。
我的 Vhost 可通过 dev.appname.myname.ca 访问,配置如下所示:
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?
我知道这是一个冗长的问题 - 感谢您的帮助。:)