I've always developed using a WAMP stack and am in the process of learning how to do the same thing in Linux (Ubuntu 14.04). So I suspect my problem is related to how I've set up Apache and/or virtual hosts.
Here's my virutal host file located at /etc/apache2/sites-available/mysite.conf:
<VirtualHost *:80>
ServerName mysite
ServerAdmin [email protected]
DocumentRoot /var/www/mysite
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/mysite/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
Whenever I go to https://mysite/index
, https://mysite/index/index
or https://mysite/index/login
I get a 404 error, but not when I go to https://mysite
or https://mysite/articles
. I verified that both mod_rewrite
and Phalcon are enabled, and I made sure 127.0.0.1 mysite
was in my hosts file. I have an IndexController and an ArticleController in app/controllers.
Here's the file at /var/www/mysite/.htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^$ public/ [L]
RewriteCond %{REQUEST_URI} !^/forums.*
RewriteRule (.*) public/$1 [L]
</IfModule>
/var/www/mysite/public/.htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?_url=/$1 [QSA,L]
</IfModule>
/var/www/mysite/public/index.php:
<?php
try {
$config = new Phalcon\Config\Adapter\Ini('../app/config/config.ini');
$loader = new Phalcon\Loader();
$loader->registerDirs(array(
$config->application->controllersDir,
$config->application->modelsDir
))->register();
$di = new Phalcon\DI\FactoryDefault();
$di->set('config', $config);
$di->set('db', function () use ($config) {
return new Phalcon\Db\Adapter\Pdo\Mysql(array(
'host' => $config->database->host,
'username' => $config->database->username,
'password' => $config->database->password,
'dbname' => $config->database->dbname,
'charset' => 'utf8'
));
});
$di->set('session', function() {
$session = new Phalcon\Session\Adapter\Files();
$session->start();
return $session;
});
$di->set('url', function () use ($config) {
$url = new Phalcon\Mvc\Url();
$url->setBaseUri($config->application->baseUri);
return $url;
});
$di->set('view', function () use ($config) {
$view = new Phalcon\Mvc\View();
$view->setViewsDir($config->application->viewsDir);
return $view;
});
$application = new Phalcon\Mvc\Application($di);
echo $application->handle()->getContent();
} catch (Phalcon\Exception $e) {
echo 'PhalconException: ', $e->getMessage();
}
/var/www/mysite/app/controllers/IndexController.php
<?php
use Phalcon\Mvc\Controller;
class IndexController extends Controller
{
public function indexAction()
{}
public function loginAction()
{}
}
/var/www/mysite/app/config/config.ini:
[database]
host = localhost
username = root
password =
dbname = mysite
[application]
baseUri = /
controllersDir = ../app/controllers/
modelsDir = ../app/models/
viewsDir = ../app/views/