2

현재 MVC 기술을 사용하여 PHP 응용 프로그램을 개발 중입니다. 유용한 디렉토리 구조에 대해 생각하지 않고 시작했습니다.
이제 응용 프로그램을 apache2 서버에 배포 할 계획입니다. 이것이 바로 지금의 모습입니다.
My current layoutMVC PHP 응용 프로그램의 구조

나는 웹에서 액세스 할 수있는 서버에 httpdocs 폴더가 있습니다. 모든 파일을이 디렉토리에 복사하면 일부 파일에 액세스 할 수 없게 될 수도 있습니다. public 폴더에는 액세스 할 수 있어야하는 파일이 들어 있습니다. (내 index.php를 넣어야 할 수도 있습니다)

내 질문은 : 그러한 응용 프로그램에 적합한 레이아웃은 무엇입니까? public을 제외한 모든 폴더를 httpdocs의 상위 폴더에 넣어야합니까?

귀하의 조언에 감사드립니다!

답변

2

http://httpd.apache.org/docs/2.1/vhosts/examples.html

당신은 거기 모습을 가질 수 있습니다. 가상 호스트를 설정하는 것은 항상 좋으므로 응용 프로그램을 혼용하지 마십시오. 그리고 공용 폴더에 액세스 할 수 있습니다.

<VirtualHost *:80> 
DocumentRoot /var/www/mvc_app/public 
ServerName www.example.com 

<Directory /var/www/mvc_app/public> 
    Options Indexes FollowSymLinks MultiViews 
    AllowOverride None 
    Order allow,deny 
    allow from all 
</Directory> 

</VirtualHost> 
1

공용 디렉토리를 httpdocs로 사용하십시오. 이 같은 공공에 대한 웹 루트 점 : 당신이 아파치 구성에 액세스 할 수없는 경우

<VirtualHost *:80> 
DocumentRoot /path/to/public 
ServerName www.domain.com 
... 
</VirtualHost> 

당신은 단지 공용 디렉토리로 "httpdocs"를 사용할 수 있습니다. 공개에서 httpdocs로 모든 것을 이동하고 나머지 응용 프로그램은 httpdocs 외부에 보관합니다. 공개 디렉토리의 이름은 자산 경로 ("mydomain.com/javascripts/foo.js")를 아는 한 중요하지 않습니다.

2

가장 간단한 해결책은 CakePHP의가 무엇과 유사하고, 그 index.php 파일에 대한 모든 요청을 매핑하여 사용자의 public 디렉토리에 index.php 다음 단지가 .htaccess 파일이있을 것입니다. 당신의 public 디렉토리에 유사하게 다음

RewriteEngine on 
RewriteRule ^(.+) /public/index.php/$1 [L,NC] 

그리고 :

그래서 당신의 루트 디렉토리에 당신이 뭔가를 할 것이다

RewriteEngine on 
RewriteRule ^(.+) index.php/$1 [L,NC] 

PHP 스크립트는 여전히 같은 다른 스크립트에 액세스 할 수있을 것 파일 시스템에서 작동하며 HTTP를 통하는 것이 아닙니다.

관련 문제