Codeigniter 4 Stuff
A) Virtualmin and Codeigniter 4
- In Virtualmin, extracted CI4 to the public_html folder.
- Goto ‘Website Options’ and changed the ‘Website documents sub-directory’ to:
public_html/public
This changes the Directory tag in Apache to: <Directory /home/ci4/public_html/public>
. This makes sure that Apache uses the index.php as the front router file in the public folder.
- Comment out the following, in the
public_html/public/.htaccess
file:Line 2: #Options All -Indexes
(this is already set in the Apache config for the Virtual Server) - and change
Options FollowSymLinks
toLine 11: Options +SymLinksIfOwnerMatch
(which provides symlink protection).
HTACCESS File in Public Folder.
# Disable directory browsing # Options All -Indexes # ---------------------------------------------------------------------- # Rewrite engine # ---------------------------------------------------------------------- # Turning on the rewrite engine is necessary for the following rules and features. # FollowSymLinks must be enabled for this to work. <IfModule mod_rewrite.c> Options +SymLinksIfOwnerMatch RewriteEngine On # If you installed CodeIgniter in a subfolder, you will need to # change the following line to match the subfolder you need. # http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritebase #RewriteBase "/" # Redirect Trailing Slashes... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} (.+)/$ RewriteRule ^(.*)/$ /$1 [L,R=301] # Rewrite "www.example.com -> example.com" RewriteCond %{HTTPS} !=on RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L] # Checks to see if the user is attempting to access a valid file, # such as an image or css document, if this isn't true it sends the # request to the front controller, index.php RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d #RewriteRule ^([\s\S]*)$ index.php/$1 [L,NC,QSA] (orginal line) RewriteRule ^([\s\S]*)$ index.php?/$1 [L,NC,QSA] # Ensure Authorization header is passed along RewriteCond %{HTTP:Authorization} . RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] </IfModule> <IfModule !mod_rewrite.c> # If we don't have mod_rewrite installed, all 404's # can be sent to index.php, and everything works as normal. ErrorDocument 404 index.php </IfModule> # Disable server signature start ServerSignature Off # Disable server signature end