2012-12-16 3 views
1

난 내 모든 폴더가이 같은으로 public_html 아래에 있던 웹 응용 프로그램이 있었다에서 public_html을에서 내 상위 루트 폴더에 액세스하려면 :
   이
   을 -pages어떻게 내 MVC PHP 응용 프로그램

으로 public_html을 - 템플릿
    -includes
   는
    -scripts 012,350,952,993을 -styles    는
   가 index.php를

그래서 내 웹 사이트가 완벽하게 작동하고 라이브 서버 (PHP 5.2.17 버전) 나누었다 내가 객체 지향 접근 방식 스위치 없음 싶어 모든 것을 변화 -images

응용 프로그램
   이
을 -models : 배우고 난 내 폴더 구조를 변경하고 appache에서 로컬로 완벽하게 일했다, 그래서 젠드 프레임 워크 구조 모델에서 영감을 시도, 새로운 구조는 이것이다3210     -controllers
    -views
    -config
    -layouts
        -templates
라이브러리
    -functions
으로 public_html
    -styles 0,123,509,529을    이
   이
    그래서 index.php를

-images -scripts, 내가 그것을 서버를 살고 전송, 그리고 지금 내 주요 응용 프로그램은 루트 (public_html을)를 벗어 물론 내가 할 수있는 public_html과 물론 index.php의 상위 루트 폴더 (응용 프로그램, 라이브러리)에 액세스하지 마십시오. URL.
나는 그들을 포함 할 수 있지만 예를 들어, 내 login.php의 경우 응용 프로그램 폴더 내부에있는보기 폴더의 경우 앵커 태그에 URL으로 액세스해야합니다. 또한 URL을 통해 내 스크립트 폴더에서 controoler 폴더에 액세스해야합니다 (ajax 호출 등).
나는 .htaccess 파일을 사용해야한다는 것을 읽었지 만 어떤 규칙을 사용해야하는지, 어디서 그 파일을 넣을 지, 어떻게 작성해야하는지에 대해 누군가가 나를 도와 주었다. 내가 무엇을해야하는지 말해 주시겠습니까?
안부

+0

MVC 모델에서는 대개 URL로 직접'views' 폴더 내의 파일에 액세스하려고하지 않습니다. –

답변

2

실수입니다. 더 가까이서 MVC 프레임 워크를 살펴보십시오 (예를 들어, Zend 언급). 모든 것은 공용 폴더 안의 index.php를 통해 진행됩니다.URL을 통해 공용 폴더 아래에있는 항목에 액세스 할 필요가 없습니다 (실제로 보안상의 이유로 금지되어야합니다). 내부 프로그램 구조 및 다시 쓰기 규칙을 통해 컨트롤러의 동작에 액세스합니다. 일반적으로 모든 요청은 index.php로 강제 라우팅 된 다음 응용 프로그램이 어디로 갈 것인지를 결정합니다. 길에서

+0

빠른 답변을 주셔서 감사합니다.하지만 내 hav는 navbar.php footer.php로 내 색인 부분을 분리하고 내 탐색 메뉴에 내 메뉴가 있는데 내 index_view.php는 view_view.php 내 view 폴더를 참조해야합니다. 또한 그 안에 컨트롤러를 포함 시켰습니다. 당신이 무엇을 의미하는지 정확히 이해하지 못했기 때문에 더 많이 말해주었습니다. mvc.thanks에 매우 익숙합니다. – azad6026

+1

파일 시스템에서 파일을 PHP 스크립트에 포함시킬 수 있습니다. 그들은 실제로 위치합니다. navbar.php와 footer.php를 스크립트 안에 포함하지 않는 이유는 무엇입니까? URL 액세스가 필요하지 않습니다. – ualinker

0

봐는 CodeIgniter를, MVC 프레임 워크는 index.php file 그 자체의 파일 라우팅을 처리합니다

 
$system_path = 'system'; 
$application_folder = 'application'; 
$view_folder = ''; 

/* 
* --------------------------------------------------------------- 
* Resolve the system path for increased reliability 
* --------------------------------------------------------------- 
*/ 

    // Set the current directory correctly for CLI requests 
    if (defined('STDIN')) 
    { 
     chdir(dirname(__FILE__)); 
    } 

    if (($_temp = realpath($system_path)) !== FALSE) 
    { 
     $system_path = $_temp.'/'; 
    } 
    else 
    { 
     // Ensure there's a trailing slash 
     $system_path = rtrim($system_path, '/').'/'; 
    } 

    // Is the system path correct? 
    if (! is_dir($system_path)) 
    { 
     header('HTTP/1.1 503 Service Unavailable.', TRUE, 503); 
     exit('Your system folder path does not appear to be set correctly. Please open the following file and correct this: '.pathinfo(__FILE__, PATHINFO_BASENAME)); 
    } 

/* 
* ------------------------------------------------------------------- 
* Now that we know the path, set the main path constants 
* ------------------------------------------------------------------- 
*/ 
    // The name of THIS file 
    define('SELF', pathinfo(__FILE__, PATHINFO_BASENAME)); 

    // Path to the system folder 
    define('BASEPATH', str_replace('\\', '/', $system_path)); 

    // Path to the front controller (this file) 
    define('FCPATH', str_replace(SELF, '', __FILE__)); 

    // Name of the "system folder" 
    define('SYSDIR', trim(strrchr(trim(BASEPATH, '/'), '/'), '/')); 

    // The path to the "application" folder 
    if (is_dir($application_folder)) 
    { 
     if (($_temp = realpath($application_folder)) !== FALSE) 
     { 
      $application_folder = $_temp; 
     } 

     define('APPPATH', $application_folder.'/'); 
    } 
    else 
    { 
     if (! is_dir(BASEPATH.$application_folder.'/')) 
     { 
      header('HTTP/1.1 503 Service Unavailable.', TRUE, 503); 
      exit('Your application folder path does not appear to be set correctly. Please open the following file and correct this: '.SELF); 
     } 

     define('APPPATH', BASEPATH.$application_folder.'/'); 
    } 

    // The path to the "views" folder 
    if (! is_dir($view_folder)) 
    { 
     if (! empty($view_folder) && is_dir(APPPATH.$view_folder.'/')) 
     { 
      $view_folder = APPPATH.$view_folder; 
     } 
     elseif (! is_dir(APPPATH.'views/')) 
     { 
      header('HTTP/1.1 503 Service Unavailable.', TRUE, 503); 
      exit('Your view folder path does not appear to be set correctly. Please open the following file and correct this: '.SELF); 
     } 
     else 
     { 
      $view_folder = APPPATH.'views'; 
     } 
    } 

    if (($_temp = realpath($view_folder)) !== FALSE) 
    { 
     $view_folder = realpath($view_folder).'/'; 
    } 
    else 
    { 
     $view_folder = rtrim($view_folder, '/').'/'; 
    } 

    define('VIEWPATH', $view_folder); 

당신은 .htaccess에 의존하지해야합니다, 당신은 mod_rewrite 사용할 수없는 환경과 문제로 실행 할 수 있습니다.

또한, views/ 디렉토리의 파일을 하이퍼 링크에서로드하지 마십시오. index.php의 페이지에 대한 모든 요청을 controllers/으로 라우팅하고 을 입력 한 다음을 사용하여 파일을로드합니다. CodeIgniter의 소스를 다시 한 번 생각해보십시오.