2013-10-02 2 views
4

하위 폴더에 CakePHP 앱을 설치하려고하지만 루트 도메인에서 실행하려고합니다. 예를 들어 사용자 요청이 domain.co.uk이고 웹 루트가 {DOCUMENT_ROOT}/version-13/app/webroot입니다.루트 도메인의 하위 폴더에서 CakePHP 앱을 실행하려면 어떻게해야합니까?

호스팅 설정 내가 루트에 다음의 .htaccess를 그래서 저를 문서 루트를 변경할 수 없습니다 :

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteBase/
    RewriteRule ^$ version-13/app/webroot/ [L] 
    RewriteRule (.*) version-13/app/webroot/$1 [L] 
</IfModule> 

이 일을 할 것으로 보인다. 그러나 Cake는 하위 폴더를 감지하여 작성한 모든 URL (예 : $this->Form->create() 작업 등)에 추가하므로 domain.co.uk/signup 대신 domain.co.uk/version-13/signup에 게시 된 양식으로 끝납니다.

나는 이것이 아마도 단순한 것이 될 것이라는 것을 알고 있지만 나는 벽돌 벽을 때리고있다. 내가 뭘하려고해도 나는 그것을 작동시킬 수 없다!

+0

왜 다른 위치에 버전을 업로드하고 있습니까? [버전 관리] (http://en.wikipedia.org/wiki/Revision_control)을 살펴 보았습니까? 예를 들면 : [자식] (http://git-scm.com/) 또는 [subversion] (http://subversion.apache.org/)? – Jelmer

+0

버전 관리에 Git을 사용하고 있습니다. 배포 용도가 더 많습니다. 나는이 호스트에서 할 수있는 일이 제한되어 있으므로 (VPS 옵션이 없음) 아이디어가'아카이브 마스터'로 할 수 있고 새 버전을 별도의 폴더에 업로드 한 다음 테스트를 수행하십시오 중단 시간을 제로로 유지할 수있는 경로. – Tom

+0

아 좋아요. 창조적 인 사운드 :) – Jelmer

답변

3

설정을 이해하기 어렵습니다. 더 자세히 설명해야합니다.

Configure::write('App.fullBaseUrl', 'http://example.com'); 
+1

이 옵션을 설정해도 아무런 영향이 없었습니다. 그러나, 나는 Configure :: write ('App.baseUrl,'/ ');가 설정되었다는 것을 알아 차렸다. 예상대로 작동합니다. 생성 된 모든 URL에는 접두어가 붙은 버전 폴더가 없습니다. 감사! – Tom

0
이 변경

당신의 RewriteBase /RewriteBase /version-13/에 (당신의 .htaccess에서) 당신은 바로 설정해야합니다 : 바로 그것을 가지고한다면, 우선 /app/config/core.php를 확인합니다.

올바르게 로컬 서버를 설정하지 않았을 때와 똑같은 문제가 발생하여 내 응용 프로그램을 내 기본 도메인의 폴더에 넣어야했습니다.

multiple apps at one core을 사용할 수 있습니다. 이것은 "버전 관리"에 유용 할 수 있습니다.

ps. 빠른 Google 검색 후에 나는 다음을 찾았습니다. 잘 읽지는 않았지만 똑같은 것처럼 보입니다. http://cookingwithcakephp.blogspot.nl/2008/04/installing-cakephp-into-subdirectory.html

+0

고마워, 나는 당신의 제안 (그리고 링크 된 기사의 것들 - 나는 실제로 여기에 게시되기 전에 거기에 있었다!)을 시도했다. RewriteBase를 버전 폴더로 설정하는 것은 동일하게 작동합니다 - 페이지는 routes.php의 경로에 올바르게 응답하지만 생성 된 URL (예 : 양식 용 파일)에는 하위 폴더 (예 :'

). – Tom

+0

하위 폴더를 양식에 포함시켜야하는 이유는 무엇입니까? '/ version-13/signup' 권한으로 이동 하시겠습니까? 그렇지 않으면 나는'/ signup'을 보게됩니다. 여러분이 정확히 이해한다면 존재하지 않습니다. – Jelmer

+0

'/ signup'은 routes.php에서 연결 한 경로입니다 - "pretty url"이므로 기본'/ {controller}/{action}'형식이 없습니다. 사이트가 하위 폴더에 없다면,'$ this-> Form-> create()'로 생성 된 모든 양식은'/ signup'에 게시됩니다. 그러나 하위 폴더에있을 때'/ signup'에서 페이지를 볼 수 있지만 생성 된 모든 URL에는 하위 폴더가 포함됩니다. 사이트에 하위 폴더가없는 것처럼 작동하고 루트에있는 것처럼 작동해야합니다. 'Configure :: write ('App.baseUrl,'/ ');를 설정하면 속임수를 쓰게됩니다. – Tom