Configuring Apache 2

Hazaar MVC is designed to run with Apache 2.x.

It also works with Nginx (see Configure Nginx) and it may work with other web servers but they are not tested and so are outside the scope of this document. If you have success getting Hazaar MVC working on another web server, please feel free to Contact Us.

Document Root

If your HazaarMVCapplication is going to be the only thing running on your web server, then installation is incredibly easy. Your DocumentRoot is probably already set to/var/wwwso all you need to do is replace the directory /var/www/ with a symlink to your application public directory.
You will need to make sure that your default Apache configuration allows for overrides by making sure that
AllowOverride All
is set in your directory configuration. Such as:
DocumentRoot /var/www
<Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
</Directory>
If your DocumentRoot is/var/www and your application is stored in/var/lib/myapplicationyou can run:
rm -rf /var/www
ln -s /var/lib/myapplication/public /var/www

Sub-Directory

If your website hosts multiple sites in sub-directories, then all you need to do is put a symlink in your DocumentRoot path to your application public directory.
ln -s /var/lib/myappllciation/public /var/www/myapp

Virtual Host

You can also install your HazaarMVCapplication as a virtual host.
<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName myapp.example.com
    DocumentRoot /var/lib/myapplication/public
    <Directory /var/lib/myapplication/public></Directory>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>
</VirtualHost>
You can use the above config by just changing the ServerName, DocumentRoot and Directory directives.

Directory Alias

It is possible to run a HazaarMVCapplication in a server alias. However this is not recommended as it requires changes to the.htaccessfile which essentially lock-in the path of the application. This means that if you later decide to move the application you will also have to remember to update the.htaccess file to reflect the new path.
Setting up a server alias requires two steps.

Step 1 – Add the server alias

Edit your webserver site config file. Normally this would be/etc/apache/sites-enabled/000-default. Add the following to somewhere inside the VirtualHost container.
Alias /myapp /var/lib/myapplication/public
    <Directory /var/lib/myapplication/public>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
</Directory>

Step 2 – Update the .htaccess file

Edit your.htaccess file, in this case/var/lib/myapplication/public/.htaccessand add a RewriteBase directive so that it looks as follows:
<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteBase /myapp
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php [QSA,L]
 </IfModule>
Where/myapp is the directory alias where you want your application to be accessible.