2010-11-29 1 views
6

여러 도메인에서 실행하려면 zend_framework를 기반으로 동일한 사이트를 실행해야하며 내 응용 프로그램은 실행중인 도메인을 인식하고 있어야합니다. Zend_Controller_Router_Route_Hostname을 사용하는 것이 좋겠다고 생각했지만 몇 가지 문제가있었습니다. 내 부트 스트랩에 다음 코드가 나는 다음과 같은 오류 "하위 도메인을 지정하지."GET 한Zend_Controller_Router_Route_Hostname을 사용하여 여러 도메인에서 동일한 Zend_Framework 사이트 실행

$ctrl = Zend_Controller_Front::getInstance(); 
$router = $ctrl->getRouter(); 
$router->removeDefaultRoutes();  

$hostnameRoute = new Zend_Controller_Router_Route_Hostname(
    ':sub-domain.:domain.:tld' 
); 

$defaultRoute = new Zend_Controller_Router_Route(
    ':controller/:action/*', 
    array(
     'controller' => 'index', 
     'action' => 'index' 
    ) 
); 
$router->addRoute('default',$hostnameRoute->chain($defaultRoute)); 

내 레이아웃 파일에있는 $ this-> url을 추적하면 URL이 요청 URL과 일치하기 전에 URL을 어셈블하기 위해 정의 된 경로를 사용하고 있다고 생각합니다. 호스트 이름 경로에 기본값을 설정하면 오류가 발생하지 않지만 레이아웃의 URL은 현재 호스트 이름의 값 대신 기본값을 사용합니다.

누가이 문제를 해결할 수 있습니까?

답변

1

하위 도메인의 기본값을 정의해야합니다. $ defaultRoute을 다음으로 변경하십시오.

$defaultRoute = new Zend_Controller_Router_Route(
    ':controller/:action/*', 
    array(
     'controller' => 'index', 
     'action' => 'index' 
    ) 
); 

정상 작동합니다.

+1

그가 작성한 글이나 맹인 인 글자와 다르지 않습니까? –

1

URL 생성에 문제가 있습니다. 이 같은 호스트 이름의 노선 정의 변수에 대한 매개 변수를 지정해야합니다 : 하위 도메인 :

echo $this->url(array('sub-domain' => 'your-subdomain-here', 'domain' => 'your-domain', 'tld' => 'com'), 'default'); 

그렇지 않으면 젠드 URL 도우미가 당신의 정의 에 대한 URL을 생성 할 수 없습니다. 도메인 :. TLD. 제공되는 예제는 다음 URL을 생성합니다. your-subdomain-here.your-domain.com/current_controller/current_action

또한 하위 도메인이 유효한 변수 이름인지 확인하십시오. 하위 도메인으로 변경하십시오.

관련 문제