2013-02-07 2 views
1

다른 앱을 보유해야하므로 Cake (루트 폴더 앱)에서 첫 번째 레벨 디렉토리를 제외하려고합니다.CakePHP 앱에서 루트 폴더 제외

공용 폴더

그래서
.htaccess [modified] 
app 
    .htaccess [unmodified] 
    webroot 
     .htaccess [unmodified] 
     index.php [unmodified] 
     ... 
    ... 
lib 
    Cake 
    ... 
development 
    app 
     webroot 
      index.php [dumps $_SERVER for test purposes] 

, 내 개발 구조가 여전히 아무튼 :

/는

/개발 응용 프로그램의 테스트 버전을 보유하는

디렉토리 구조/응용 프로그램을 보유하고 내 루트 .htaccess가 작동하는지 테스트하기 위해 내부에 앱 (.htaccesses)이 없습니다.

<IfModule mod_rewrite.c> 
    RewriteEngine on 

    RewriteCond %{REQUEST_URI} ^/development.* 
    RewriteRule (.*) - [L] 

    RewriteRule ^$ app/webroot/ [L] 
    RewriteRule (.*) app/webroot/$1 [L] 
</IfModule> 

어떻게됩니까 :

/개발/보여줍니다 개발 폴더의 아파치 지수

/개발/응용 프로그램/쇼

이 루트 htaccess로 내 수정입니다 앱 폴더의 아파치 인덱스

/development/app/webroot는 루트 앱을 보여줍니다 (요청은 captu 개발 URL 일치에도 불구하고 빨간색).

/development/app/webroot 내 /development/app/webroot/index.php 파일을 보여줘야합니다. 맞습니까?

여기서 내가 무엇을 놓치고 있습니까?

+2

개발 사이트를 호스팅하기 위해 가상 호스트 (다른 ​​포트가있을 수 있음)를 쉽게 만들 수 없습니까? 이 가상 호스트는/development/app/webroot .. 또는 아마도 하위 도메인을 가리킬 것입니다. – pleasedontbelong

+0

일반적으로 그렇습니다. 하지만 주 서버에 설치된 SSL 인증서를 사용하는 타사 SOAP 서비스로 테스트해야합니다. 따라서이 인증서를 하위 디렉터리에 있어야합니다. 또한 일반적인 질문을 해결하는 문제이기도합니다. IMHO, 어떤 플랫폼이라도 사이트에있는 다른 시스템과 쉽게 공동 작업 할 수 있어야하며 루트 공간을 차지하지 않아야합니다. –

답변

3

이것은 내 서버에서 이상한 버그로 밝혀졌습니다.

지금 작동입니다 결과 .htaccess : 내 사용자 계정에 SSH'd 명령 줄을 통해 .htaccess 파일을 편집 할 경우

나에게 알 수없는 이유로
<IfModule mod_rewrite.c> 
    RewriteEngine on 

    RewriteCond %{REQUEST_URI} !^/development(?:$|/) 
    RewriteRule ^$ app/webroot/ [L] 

    RewriteCond %{REQUEST_URI} !^/development(?:$|/) 
    RewriteRule (.*) app/webroot/$1 [L] 

</IfModule> 

, 그것은 작동하지 않을 것이다 !

SFTP를 통해 동일한 파일을 업로드하면 제대로 작동하기 시작했습니다.

CentOS (5.9)에서 cPanel (11.34.1)을 사용하고 있습니다.

또 다른 예 : 두 RewriteCond 지침이 동일하다는 것을

<IfModule mod_rewrite.c> 
    RewriteEngine on 

    # /development, /version1.5 and /version1.8 directories 
    # they all hold independent apps 
    # or completely non-cake-related content 

    RewriteCond %{REQUEST_URI} !^/(?:development|version1\.5|version1\.8)(?:$|/) 
    RewriteRule ^$ app/webroot/ [L] 

    RewriteCond %{REQUEST_URI} !^/(?:development|version1\.5|version1\.8)(?:$|/.*) 
    RewriteRule (.*) app/webroot/$1 [L] 

</IfModule> 

참고 : 하고자하는 경우 CakePHP의 설치에 여러 하위 폴더, 당신은이 패턴을 사용할 수 있습니다 "무시".

+0

\. 패턴의 실제 점을 캡처하는 데 사용됩니다.\가 없다면 점은 _ 문자를 의미합니다. –

+0

[Gist] (https://gist.github.com/dizyart/4733257)에이 스 니펫을 넣어 나중에 사용할 수 있습니다. ;) –