2010-05-11 3 views
3

Symfony와 localhost (XAMPP)에서 응용 프로그램을 개발 중입니다. 웹 서버와 동일한 조건을 시뮬레이트하고 싶습니다. 웹 서버로 구성되어가상 호스트의 symfony (문서 루트 문제)

은 다음과 같습니다

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

내가 거기있을거야, 그래서 /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 

것은이 문서이다 root는 여전히 /www 디렉토리로 설정되어 있지만 Symfony는 /www/web 디렉토리에 있어야합니다.
물론 내가 http://mydomain.com/web라고 부르면 작동 할 것입니다. 그러나 이것이 조용한 어리석은 해결책이라는 것을 당신이 알고 있다고 생각합니다.

그래서 내 질문은입니다. 어떻게 변경할 수 있습니까/.htaccess 등을 사용하여 기본 문서 루트 설정을 무시할 수 있습니까?

편집 : I solved it.

+0

당신이 당신의 자신의 문제, 귀하의 질문에 대답하고 대답이 질문에 표시를 해결합니다. –

답변

4

Symfony에 대해 많이 알지는 않지만 /web은 문서 루트라고 생각합니다. 다른 모든 디렉토리는 보안상의 이유로 문서 루트 외부에 있어야하고 URL의 /web 부분을 다른 디렉토리에 저장하지 않아야합니다. 그러나 당신은 이미 그것을 알고있는 것처럼 보입니다.

웹 서버의 구성을 편집 할 수있는 경우이를 반영하고 DocumentRoot을 웹 디렉토리로 설정하십시오.

당신이 그렇게 할 수없는 경우 : .htaccess 파일에 DocumentRoot을 변경할 수 없습니다하지만 그들이 내부적으로 mod_rewrite를 사용하여 /web에 갈 수 있도록 모든 요청을 재 작성하는 것이 가능하다. 그것은 kludgy지만 아마도 당신이 DocumentRoot에 영향을 미칠 수 없다면 가장 좋은 해결책입니다.

저는 mod_rewrite 전문가가 아니므로 예제를 제공 할 수 없으므로 (먼저 테스트해야하고 지금은 할 수 없습니다)하지만 누군가는 그렇게 할 것이라고 확신합니다. 질문에 mod_rewrite 태그를 추가 할 수 있습니다.

업데이트 : 업데이트 : 해야합니다. /www.htaccess 파일에 넣어 : 당신이 다음 http://www.domain.com/ 대신 물론 http://www.domain.com/web/ 사용하도록 구성 파일을 변경해야

RewriteEngine on 
RewriteBase/

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

.

나는 symfony에서 다른 .htaccess 규칙과 간섭하는지 여부는 말할 수 없습니다. 시도해보십시오. 나는 당신이 아파치 설정에 손을 가지고

0

, 더 나은은 (open_basedir 구성 지침에 의해 제한하는 경우) 전체 /www 디렉토리에 액세스하기 위해 PHP를 사용하면 가상 호스트 설정에 /www/web/www에서 문서 루트를 이동하고 허용하는 것입니다.

+0

그게 내가 할 수없는 것이다. 나는 어디에서나 당신이 아파치 설정을 수정할 수있는 공유 된 웹 호스팅을 본 적이 없다. :) – martin

+0

우리가 공유 호스트로 한 번 해본 것은 공용 웹 디렉토리를 제거하고 공유 호스트 루트에 모든 sf 프로젝트를 놓은 다음 www 디렉토리를 다시 만드는 것이다. symlink가 웹/디렉토리를 타겟으로하지만 symlink를 추가 할 수 있다면 dunno – Benoit

0

변경 방식 심포니는 디렉토리의 이름을 기대 :

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