Итак, я настраиваю SVN на своем домашнем сервере (Ubuntu 9.1) и хочу немедленно просмотреть любые изменения, внесенные в мое приложение 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, поэтому файл .htaccess в public / выглядит следующим образом:
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 / environment / development / appname / trunk / publc) и ТОГДА направить все запросы из public / в public / index.php?
Я знаю, что это сложный вопрос - спасибо за вашу помощь. :)