我可以在CodeIgniter应用程序中重组文件夹吗?

时间:2019-05-22 10:34:12

标签: php .htaccess codeigniter

我已更改我的CodeIgniter应用程序文件夹结构,如下所示:

MyCodeIgniterApp
 -应用
 -系统
 -new子文件夹
 -公共
 -index.php
 -.htaccess
 -composer.json

您可以看到上面的文件夹结构,我将public,index.php和.htaccess文件保留在子文件夹中。而且我已经更改了index.php文件中的应用程序和系统路径以使用正确的文件。 我的问题是我可以像http://localhost/MyCodeIgniterApp一样访问我的应用程序,还是应该做些什么来访问该应用程序?

1 个答案:

答案 0 :(得分:0)

假设您在Windows上使用XAMPP

我建议您使用以下文件夹结构

a1|b1|c1|20190101|20190101|1|11|A|D
a1|b1|c1|20190101|20181201|2|12|B|E
a1|b1|c1|20190101|20181101|3|13|C|F
a2|b2|c2|20190101|20181101|4|14|G|J
a2|b2|c2|20190101|20181101|5|15|H|K
a2|b2|c2|20190101|20181101|6|16|I|L

但是,如果要保持文件夹结构不变,则只需更改路径即可,因为它们指向的文件与以下代码相同

  1. 首先更改index.php的系统和应用程序文件夹的路径设置

来自

   MyCodeIgniterApp
    - application
    - system
    - composer.json
    - public
        - assets
        - index.php
        - .htaccess

    $system_path = 'system';
    $application_folder = 'application';
  1. 在与系统和应用程序相同的文件夹中的应用程序中添加另一个.htaccess 这样做是为了阻止apache对这个文件夹的访问(因为我们只需要php来通信到这个文件夹)

.htaccess

    $system_path = '../system';
    $application_folder = '../application';
  1. 将公用文件夹中的.htaccess修改为

        <IfModule authz_core_module>
            Require all denied
        </IfModule>
        <IfModule !authz_core_module>
            Deny from all
        </IfModule>
    

现在,您需要配置Apache服务器以提供公共文件夹而不是htdocs 您可以通过修改httpd.conf设置来实现 来自

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

    DocumentRoot "C:/xampp/htdocs"
    <Directory "C:/xampp/htdocs">

但是这样做,您将失去对htdocs文件夹中其他应用程序的访问 为避免这种情况,请尝试为您的新应用程序设置虚拟域

  1. 切换到XAMPP安装目录(通常为C:\ xampp),然后使用您喜欢的文本编辑器打开apache \ conf \ extra \子目录中的httpd-vhosts.conf文件。(以管理员身份) 并将新的虚拟主机配置添加到httpd-vhosts.conf

httpd-vhosts.conf

    DocumentRoot "C:/xampp/htdocs/MyCodeIgniterApp/public"
    <Directory "C:/xampp/htdocs/MyCodeIgniterApp/public">

此处“ app.local”是您所需的虚拟域

现在以管理员身份打开文件'C:\ windows \ system32 \ drivers \ etc \ hosts' 并添加

<VirtualHost app.local:80>   
    DocumentRoot "C:/xampp/htdocs/MyCodeIgniterApp/public"
    ServerName app.local
    <Directory  "C:/xampp/htdocs/MyCodeIgniterApp/public">
        Options All
        AllowOverride All
        Require all granted 
    </Directory>
</VirtualHost>
  1. 重新启动XAMPP,然后尝试转到新的虚拟域 例如http://app.local

希望有帮助