我有一个网络应用程序,我的所有文件夹都在public_html下,如下所示:
的public_html
-pages
-templates
- 包括
-styles
-scripts
-images
的index.php
所以我的网站工作得很完美,并且在一个真实的服务器上(使用php 5.2.17版本)。但我想转向面向对象的方法并改变一切,并尝试从zend框架结构模型中学习和启发,所以我改变了我的文件夹结构,它在appache中本地工作完美,新结构是这样的:
应用
-models
-controllers
-views
-config
-layouts
-templates
库
-functions
的public_html
-styles
-scripts
-images
的index.php
所以,我把它转移到实时服务器,现在我的主应用程序是root(public_html),当然我不能从public_html访问上层根文件夹(应用程序,库),当然还有 URL 的即可。
我可以包含它们,但我需要在锚标记中通过 url 访问,以便例如在应用程序文件夹中的views文件夹中查看我的login.php。
另外,需要通过url从我的脚本文件夹访问controoler文件夹(用于ajax调用等)。
我已经读过我需要使用.htaccess文件,但我不知道我应该使用什么规则,我应该把它放在哪里以及如何帮助我,因为我急需它。
请告诉我该怎么办?
问候
答案 0 :(得分:2)
答案 1 :(得分: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的来源以获取想法。