Symfony на виртуальном хосте (проблема с корневым документом)

Я разрабатываю приложение в Symfony и на localhost (XAMPP). Я хочу имитировать те же условия, что и на веб-сервере.

Веб-сервер настроен следующим образом:

/www => mydomain.com /foo => foo.mydomain.com /bar => bar.mydomain.com ... 

Я собираюсь поместить приложение Symfony в /www direcotry, чтобы он был:

 /www /www/apps /www/apps/frontend /www/apps/frontend/... /www/apps/backend /www/apps/backend/... /www/cache /www/config ... and so on... /www/web 

Дело в том, что корень документа по-прежнему установлен в каталог /www но Symfony ожидает его в /www/web .
Конечно, это сработает, если я позвоню http://mydomain.com/web но я думаю, вы понимаете, что это тихое глупое решение.

Поэтому мой вопрос : есть ли способ изменить / обойти настройки корневого каталога по умолчанию с помощью .htaccess или что-то еще?

EDIT: Я решил .

Я не знаю много о Symfony, но /web должен быть корнем документа. Все остальные каталоги должны находиться за пределами корня документа по соображениям безопасности для одного и избегать /web части в URL-адресе для другого. Но похоже, что вы уже это знаете.

Если вы можете отредактировать конфигурацию веб-сервера, попробуйте отразить это и установить DocumentRoot в веб-каталог.

Если вы не можете этого сделать: невозможно изменить DocumentRoot в файле .htaccess но можно переписать все запросы, чтобы они переходили в /web внутри, используя mod_rewrite . Это kludgy, но, вероятно, лучшее решение, если вы не можете повлиять на DocumentRoot .

Я не гуру mod_rewrite, поэтому я не могу представить пример (сначала мне нужно было бы протестировать его, и я не могу сделать это прямо сейчас), но я уверен, что кто-то это сделает. Возможно, добавьте тег mod_rewrite на ваш вопрос.

Обновление: непроверено, но должно работать. Поместите файл .htaccess в /www :

 RewriteEngine on RewriteBase / RewriteCond %{REQUEST_URI} !^/web/ RewriteRule .* /web/%1 [QSA] 

вам тогда нужно будет изменить ваши файлы конфигурации, чтобы использовать http://www.domain.com/ а не http://www.domain.com/web/ .

Я не могу сказать, вмешивается ли это в какие-либо другие правила .htaccess на конец Symfony – вам придется попробовать.

Я получил руку на конфигурацию apache, тем лучше переносить корень документа с /www на /www/web в конфигурацию virtualHost и разрешить php (если он ограничен open_basedir конфигурации open_basedir ) для доступа к каталогу целиком /www .

Измените способ, которым symfony ожидает, что ваш каталог будет называться:

 // config/ProjectConfiguration.class.php class ProjectConfiguration extends sfProjectConfiguration { public function setup() { $this->setWebDir($this->getRootDir().'/www/or/whatever/directory'); } }