2012-04-12 5 views
2

Apache 서버에서 CakePhp을 설정하는 데 문제가 있습니다. 그것은 내 dev 환경에서 잘 작동하고, 지금은 배포를 찾고 있어요.CakePhp 2.0 .htaccess

"http://www.example.com/mysite/" 

샘플 컨트롤러 액션은 다음과 같습니다 :

URL입니다 모양을

"http://www.example.com/mysite/users/login" 

작동하지 않는 기본 htaccess로 파일을 사용.

phpInfo에 따라 mod_rewrite가로드되고 URL을 다시 쓰지만/mysite /가 컨트롤러로 표시됩니다.

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

응용 프로그램 :

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteRule ^$ webroot/ [L] 
    RewriteRule (.*) webroot/$1 [L] 
</IfModule> 

웹 루트 :

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^(.*)$ index.php?/$1 [QSA,L] 
</IfModule> 

것은 내가 찾고해야 변경 다음은 출력과 내 .htaccess 파일이

Missing Controller 

Error: MysiteController could not be found. 

Error: Create the class MysiteController below in file: >app/Controller/MysiteController.php 

루트입니다 내 .htaccess 파일 s 또는 내 CakePhp 설정 파일? 몇 가지 다른 RewriteBases를 시도했지만 다른 오류 만 가져 왔습니다.

편집 : 서버가 php-cgi를 실행 중이고 모든 링크가 cgi-bin에 기록되고있는 것 같습니다. 예를 들어 :

$this->Html->meta('icon'); 

왜 이런 일이 될 수있는 곳거나 같은 어떤 생각 "/cgi-bin/cgiwrap/w3u_mysite/mysite/favicon.ico"경로를 쓴다?

+0

도메인을 완전히 사용하는 것이 잘못된 이유는 무엇입니까? (mysite 부분이 없으면?) 여러 응용 프로그램에 대해 도메인을 사용할 계획이라면 항상 하위 도메인을 사용할 수 있습니다. – mark

+0

그건 내 호스트에 의해 주어진 웹 공간, 나는 전체 도메인을 사용할 수 없습니다 – seelmobile

답변

3

문제가 관련되었다 cgi php를 실행하는 서버. CakePhp Google 그룹이이 솔루션을 제공했는지 정확하게 알 수는 없습니다.

App/Config/core.php에는 App.baseUrl에 대한 주석이 달려 있습니다. 를 주석 처리를 제거하고 그 위에 다음

Configure::write('App.baseUrl', '/mysite/'); 

로 교체, 당신은 무시해야 .htaccess 파일을 제거 말하는 의견이 있습니다. 이 사이트는 표준 값으로 .htaccess 파일을 사용하여 정상적으로 작동했지만 RewriteBase는 필요하지 않았습니다. 하나의 성가심은 $this->Html->css()$this->Html->js() 함수가 작동하지 않았지만 템플릿으로 만 호출하기 때문에 코드를 어렵게 작성하는 것은 끔찍한 일이 아닙니다.

누군가가 이러한 cgi 비애의 원인에 대한 통찰력을 가지고 있다면 공유하십시오. 모든 HTML 도우미를 사용할 수 없다면 여전히 약간의 kludge를 느낍니다.

0

Rewritebase /mysite/ (아마도 '/ mysite'는 두 번째 슬래시를 따옴표로 묶거나 붙이지 않고 .htaccesses로 시도해야 할 것입니다.) mod 재 작성을 수행하면이 폴더를 사용할 수 있습니다.


올바른 경로를 찾기 위해 webroot/index.php 파일을 확인 했습니까? 최후의 수단으로 노선에서 'mysite'를 걸러 낼 수 있습니까?


최종 제안 : 당신의 RewriteRules에서 appmysite/ 앞에 추가.

+0

첫 번째 제안의 모든 조합이 작동하지 않았고, 일부는 차이가 없었으며 다른 것은 내부 서버 오류를 산출했습니다. index.php가 올바르게 구성되어 있지만 기본값을 사용하고 있다고 생각합니다. phpInfo의 루트 경로로 커스터마이징을하면 아무런 차이가 없습니다. CakePhp에서 라우팅을 변경하려고 시도했는데 흥미로운 결과가있었습니다. CGI 오류가있는 대체 URL로 리디렉션되었으므로 도메인에서 재 작성도 사용하고 있다고 생각합니다. 최종 제안으로 인해 내부 서버 오류가 발생했습니다. – seelmobile

+0

내 호스트에서 내 디렉터리의 AllowOverride가 All이 아닌 Directive로 설정되어 있다고 명시 적으로 언급했습니다. RewriteBase가 예상대로 작동하지 않을 수 있습니까? – seelmobile

+0

나는 약간의 제안이 부족하다. 마지막 질문이 하나 있는데, RewriteBase를 사용할 때 모든 .htaccess 파일에 사용 했는가? – Joep

0

일부 서버와 비슷한 문제가 있습니다. 나를위한 해결책은 모든 .htaccess 파일의 절대 경로를 지정하는 것이 었습니다.

뭔가 같은 :

루트 :

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteRule ^$ /mysite/app/webroot/ [L] 
    RewriteRule (.*) /mysite/app/webroot/$1 [L] 
</IfModule> 

응용 프로그램 :

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteRule ^$ /mysite/app/webroot/ [L] 
    RewriteRule (.*) /mysite/app/webroot/$1 [L] 
</IfModule> 

웹 루트 :

내 편집에 의심으로
<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^(.*)$ /mysite/app/webroot/index.php?/$1 [QSA,L] 
</IfModule>