noe*_*eat 0 php .htaccess codeigniter
我一直在尝试更改CodeIgniter文件结构,使其更安全,更清洁,但我无法使其正常工作。我想分离将对用户可见的应用程序/系统和公共文件。
- application
- system
- public
Run Code Online (Sandbox Code Playgroud)
它有效,但我必须输入
example.com/public/index.php或example.com/public/controller
我希望能够像example.com/controller这样输入基本URL。
我该怎么做?
对于CodeIgniter 3.x,正确的处理方式如下(在2018年及之后):
public在根文件夹中创建一个文件夹$system_path为../system$application_folder为../application现在,我们需要一个.htaccess文件,但是CI 3.x默认没有.htaccess文件,所以..如何从默认具有CI 4.x的文件中窃取呢?你可以在这里找到它:
https://github.com/bcit-ci/CodeIgniter4/blob/develop/public/.htaccess
我建议您不要包含该行SetEnv CI_ENVIRONMENT development,而是在apin或NGinx .conf文件中定义该行,以便.htaccess文件可以在任何地方使用。
最后,您将需要更新.conf文件,以便将DOCUMENT_ROOT其设置为名为public的子文件夹(或您选择的命名方式)。然后重新启动Apache / Nginx。
那应该给您相同的结果,并且更加安全。
-更新-我发现.htaccessCI 4中的文件有问题,但是怀疑是我的系统出了问题。这个简单的版本确实起作用了:
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]
Run Code Online (Sandbox Code Playgroud)