2009-11-24 4 views
1

필자는 몇 가지 웹 MVC 애플 리케이션을 PHP로 작성했지만, 젠드 프레임 워크 v1.9.5를 사용하는 가장 좋은 방법을 찾아 내려하고있다.Zend Framework 1.9.5 응용 프로그램에서 .htaccess를 사용해야하는 이유는 무엇입니까?

젠드 프레임 워크 1.9.5 응용 프로그램에서 .htaccess의 역할에 대해 혼란스러워합니다. 저는 젠드 프레임 워크 (Zend Framework)에 관한 많은 자습서, 서적 및 SO 질문을 컨설팅했습니다.하지만 대부분은 .htaccess 파일의 중심 역할에 대해 이야기합니다. 나는 .htaccess를 사용하여 가상 호스트를 지원하고 URL 재 작성을 지원하고 index.php를 거치지 않고 Apache가 정적 파일을 제공 할 수 있도록 허용하지만 현재 실행 중이거나 v1.9.5에서 여전히 필요한지 확실하지 않습니다.

현재 꽤 간단한 (HTML, CSS, jQuery) Zend Framework 응용 프로그램을 작성하고 테스트 용 우분투 서버 9.10 환경에서 Apache 가상 호스트를 만들었습니다. .htaccess 파일을 전혀 사용하지 않았기 때문에 응용 프로그램이 제대로 작동하는 것 같습니다.

내가 이클립스/PDT와 zf.sh 도구를 사용하여 내 응용 프로그램을 만들어 :

는 여기에 지금까지 무슨 짓을했는지. 'zf create project'가 생성 한 공개 디렉토리에 css, images 및 js 디렉토리를 추가했습니다. 이 응용 프로그램은 내 로컬 MAMP 설치에서 제대로 실행됩니다.

서버에서 저는 /usr/local/Zend/share/ZendFramework-1.9.5에 Zend Framework를 설치하고 /usr/local/Zend/share/ZendFramework-1.9.5/library를 'include_path'에 추가했습니다. php.ini에 있습니다.

응용 프로그램을 서버 디렉토리/home/myadmin/public_html/domain [12]/com에 복사했습니다.

Slicehost Virtual Host Setup에 설명 된 Apache available-sites 디렉토리에 항목을 추가하여 가상 호스트를 만들었습니다. DirectoryIndex = index.php와 DocumentRoot =/home/myadmin/public_html/domain [12]/com/public을 지정합니다. 두 앱 모두 정상적으로 작동하는 것 같습니다.

.htaccess 파일을 사용해야합니까? 무엇 때문에? 리처드의 링크를 기반으로

*** EDIT - My Solution 

, 나는 보통 내 가상 호스트 정의에 htaccess로 살고있는 재 작성 문을 이동, 지금 내 응용 프로그램은 .htaccess 파일을 사용하지 않습니다. 젠드 프레임 워크와 대부분의 PHP 프레임 워크에 대한 htaccess로의

<VirtualHost *:80> 
    # Define admin email, server name, and any aliases 
    ServerAdmin [email protected] 
    ServerName domain1.com 
    ServerAlias www.domain1.com 

    # Only serve files from inside this directory 
    DocumentRoot /home/myadmin/public_html/domain1.com/public 

    # Directly serve any requested files that exist in DocumentRoot; 
    # otherwise redirect the request to the index.php script 
    RewriteEngine off 
    <Location /> 
    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} -s [OR] 
    RewriteCond %{REQUEST_FILENAME} -l [OR] 
    RewriteCond %{REQUEST_FILENAME} -d 
    RewriteRule ^.*$ - [NC,L] 
    RewriteRule ^.*$ /index.php [NC,L] 
    </Location> 

    # Set up log file locations 
    LogLevel warn 
    ErrorLog /home/myadmin/public_html/domain1.com/data/logs/error.log 
    CustomLog /home/myadmin/public_html/domain1.com/data/logs/access.log combined 
</VirtualHost> 

답변

1

젠드 프레임 워크의 URL rewriting에는 VirtualHost 구성과 .htaccess 파일이 있습니다. 그들은 동일한 기능을 수행하며 둘 다 필요하지 않습니다.

URL 재 작성은 단순히 비 정적 파일에 대한 모든 요청을 index.php으로 보냅니다.

Routing은 요청 URI를 분해하고 어떤 모듈/컨트롤러/액션이 실행되어야 하는지를 파악하는 프로세스입니다. 이것은 URL 재 작성에 관련된 기능이지만 별도의 기능입니다.

+0

두 가지 유용한 링크가있는 정확한 답변. 감사. – keithm

3

한 주요 용도 부트 스트랩 파일 (정적 파일 제외) 모든 요청을 리디렉션하는 것입니다 내 domain1.com 가상 호스트 파일처럼 보인다. 반드시 필요하지는 않지만 URL은/컨트롤러/액션과 대조적으로 /index.php/controller/action과 같은 것으로 끝날 것입니다.

또한 Apache 구성에 직접 다시 쓰기 규칙을 추가 할 수도 있습니다.

+0

ZF 1.9.5는 .htaccess를 사용하지 않고 자체 라우팅을 수행합니다.기본적으로 'zf create action getit controller'액션을 정의하면 url은 '/controller/getit'입니다. index.php 안에 $ Router-> addRoute()를 사용하여 많은 커스터마이징을 할 수도 있습니다. – keithm

+1

젠드 프레임 워크 커맨드 라인 도구를 사용할 때, 공개 디렉토리에 htaccess 파일을 만듭니다. –

+0

바로 당신입니다! 이클립스/PHT가 표시하지 않지만 커맨드 라인이이를 확인했다는 것은 이상한 일입니다. 이 .htaccess 파일과 ZF 라우터의 역할은 무엇입니까? – keithm

관련 문제