Я разрабатываю приложение в 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'); } }