我一直在尝试更改我的CodeIgniter文件结构,以使其更安全,更清洁,但我无法让它工作。我想将应用程序/系统和用户可见的公共文件分开。
- application
- system
- public
它有效,但我必须输入
example.com/public/index.php或example.com/public/controller
我希望能够像example.com/controller一样输入基本URL。
我该怎么做?
答案 0 :(得分:6)
对于CodeIgniter 3.x,正确的方法(2018年及之后)如下:
public
文件夹$system_path
更改为../system
$application_folder
更改为../application
现在,我们需要一个.htaccess
文件,但CI 3.x默认情况下没有.htaccess文件,soo ..如何从CI 4.x中删除默认情况下它?你可以在这里找到它:
https://github.com/bcit-ci/CodeIgniter4/blob/develop/public/.htaccess
我建议您不要包含行SetEnv CI_ENVIRONMENT development
- 而是在您的apache或NGinx .conf文件中定义它,以便.htaccess文件可以在任何地方使用。
最后,您将尝试更新.conf文件,以便将DOCUMENT_ROOT
设置为名为public的子文件夹(或您选择命名的子文件夹)。然后重启Apache / Nginx。
这应该会给你相同的结果,并且更加安全。
- 更新 -
我发现我对CI 4中的.htaccess
文件有问题,但怀疑这是我的系统问题。然而,这个简单的版本确实有效:
RewriteEngine on
RewriteCond $1 !^(index\.php|assets|images|js|css|uploads|favicon.png)
RewriteCond %(REQUEST_FILENAME) !-f
RewriteCond %(REQUEST_FILENAME) !-d
RewriteRule ^(.*)$ ./index.php/$1 [L]
答案 1 :(得分:0)
As per the CodeIgniter Installation Instructions ...
/var/application/
/var/system/
/var/www/index.php
为了获得最佳安全性,系统和任何应用程序文件夹都应放在Web根目录之上,以便无法通过浏览器直接访问它们。默认情况下,每个文件夹中都包含
.htaccess
个文件以防止直接访问,但最好将Web服务器配置更改或不遵守时完全从公共访问中删除通过.htaccess。