TShrestha
TShrestha

Reputation: 1318

How to perfectly set up virtual host for codeigniter project?

I am trying to make a virtual host for a codeigniter project. I have done this in httpd-vhosts.conf:

    <VirtualHost *:80>
      DocumentRoot "C:\xampp\htdocs\CI_projects\facebook-login"
       ServerName dev.facebook-login.com
       <Directory "C:\xampp\htdocs\CI_projects\facebook-login">
     Require all granted
    </Directory>
    </VirtualHost>

and in application/config/config.php,

$config['base_url'] = 'http://dev.facebook-login.com';

and

$config['index_page'] = '';

the browser opens the landing page. but when transiting from any other uri it says object not found. And when i configure httpd-vhosts.conf like this:

   <VirtualHost *:80>
      DocumentRoot "C:\xampp\htdocs\CI_projects\facebook-login\index.php"
       ServerName dev.facebook-login.com
       <Directory "C:\xampp\htdocs\CI_projects\facebook-login\index.php">
     Require all granted
    </Directory>
    </VirtualHost>

It arises problem with assets things, i,e images and some css doesnt loads. How can I solve it?

Upvotes: 5

Views: 19612

Answers (4)

mitch
mitch

Reputation: 1

https://www.namecheap.com/support/knowledgebase/article.aspx/10026/33/installing-an-ssl-certificate-on-xampp/ php 8 is not ready for CI4 as of jan 2021! XAMPP has preloaded ssl certificate in php 7 packages consider uncommon vhosts extra and place this in it my only persistent issues is codeigniter 4 routes, have to turn on php spark serve to get XAMPP to route pages outside of default index, nothing else works, its garbage to that extent, will try with composer next....a whole book needs to be wrote about codeigniter 4 routes and why they don't work, 200 pages plus

<VirtualHost localhost *:80> DocumentRoot "C:\xampp\htdocs" ServerName localhost

<VirtualHost example.com *:8080>
     ServerName example.com
     ServerAlias www.example.com
     DocumentRoot "C:\xampp\htdocs\codeignite4\public"
   //my project folder is codeignite4 without using composer this time
   //i added listen 8080 under listen 80 in htppd.conf
    ServerName example.com  

<VirtualHost truservex.com *:443> DocumentRoot "C:\xampp\htdocs\codeignite4\public" ServerName example.com SSLEngine On SSLCertificateFile "C:/xampp/apache/conf/ssl.crt/server.crt" // you can verifiy these file locations, certificate data SSLCertificateKeyFile "C:/xampp/apache/conf/ssl.key/server.key" // going without the Directory tag can be helpful to drop in vhosts <Directory "C:\xampp\htdocs\codeignite4\public"> Require all granted

doing this i was able to replicate the original install, create site access using http://localhost:8080 or http://example.com/ as my base url in my example index.php is removed, set to '' when using command prompt to get into codeignite4 project folder i can launch php spark serve and routes will work that were previously 404

Upvotes: 0

Mark Anthony Libres
Mark Anthony Libres

Reputation: 1054

httpd-vhosts.conf

Listen 1122
<VirtualHost *:1122>
DocumentRoot "D:\laragon_server\www\hugpong_production"
<Directory "D:\laragon_server\www\hugpong_production">
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

.htaccess

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

Upvotes: 1

mitch
mitch

Reputation: 1

Using Xampp 7.3.25 Dec 2020 because php 8 will not run error
free with codeigniter 4 as of this date, this worked for me as
my first codeigniter 4 virtual host setup, my install had 
difficulty initially with using port 80, seems to want to for
port 443 if it can..I'm not a server pro but i wanted to 
leave this for the next guy....This is strictly name based
virtual hosts for develop, ip based would have obvious 
advantages. Because i had trouble in initial CI4 testing with
port 80 the (*) in virtual hosts vs (*:80) seemed to solve one 
hurdle in searching for more ports, now i can finally begin my 
first project ...my default URL was also changed to example.com
in appstarter/apps/config file. Carefully reread <tags> for 
typos, its easy to shut server down! 

<VirtualHost *> DocumentRoot "C:/Xampp/htdocs/" ServerName localhost <Directory "C:/Xampp/htdocs/"> Require all granted

<VirtualHost *> DocumentRoot "C:/Xampp/htdocs/appstarter/public/" ServerName example.com ServerAlias www.example.com # maybe don't attempt to use dir tag, shuts down server
# the directives at httpd.conf appear to suffice

I have added a htaccess file in the appstarter/public
I assume this is primitive, can get far more advanced 
The Apache help pages helped me focus a bit more on 
what i must accomplish, name based virtual hosts this case 

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php/$1 [L,QSA]
</IfModule>


2.2 Apache configuration:      :Apache server context important!
     Order allow,deny          :The hackers are winning..... 
     Allow from all
     
2.4 Apache configuration:
     Require all granted

Upvotes: -1

user4419336
user4419336

Reputation:

I am on windows 10 and I use xampp with virtual host this is way I set up.

Put forward slash at end of base url

$config['base_url'] = 'http://dev.facebook-login.com/';

First go to

Windows > System32 > drivers > etc > host

You may need to open as administrator to be able to save it

You might see some thing like

127.0.0.1       localhost 

Below that create another one for dev.facebook-login.com like example:

127.0.0.1       localhost
127.0.0.1       dev.facebook-login.com

Save it

Then go to the

xampp > apache > conf > extra > httpd-vhosts.conf

open it as administrator so you can save it.

No need for the index.php on DocumentRoot

<VirtualHost *:80>
    ##ServerAdmin [email protected]
    DocumentRoot "C:/xampp/htdocs/CI_projects/facebook-login"
    ServerName dev.facebook-login.com
    ##ServerAlias www.dummy-host.example.com
    ##ErrorLog "logs/dummy-host.example.com-error.log"
    ##CustomLog "logs/dummy-host.example.com-access.log" common
</VirtualHost> 

Save it and restart the severs.

I use this for my htaccess

Options +FollowSymLinks
Options -Indexes
DirectoryIndex index.php
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]

Upvotes: 9

Related Questions