使用php的Apache2服务器找不到子目录

I am trying to deploy a PHP app to my DigitalOcean server, running Ubuntu 14.04 with apache2 and php5

First let me mention that the application works perfectly on localhost using the built-in php-server

I am able to hit my index.php no problem by visiting "site.com/", but it gives me 404 on every other php file. I get 404 too when going directly to site.com/index.php My application uses a simple PHP-router to redirect to my controller which handles the views.

The apache server is set to point to /var/www/my_site/public

This is the file structure: File structure

This is my index.php:

<?php
use App\Core\Autoloader;
use App\Core\Container;
use App\Core\Router;
/*************
*   CONFIG   *
*************/
error_reporting(-1);
// dev only
ini_set('display_errors', 1);
define('SCRIPT_DEBUG', true);
define('VIEW_DIR', realpath(__DIR__ . '/../views'));
define('CONFIG_DIR', realpath(__DIR__ . '/../config/'));
/***********
*   INIT   *
***********/
session_start();
require __DIR__ . '/../App/Core/Autoloader.php';
require CONFIG_DIR . '/db.php';
$dbh = new PDO('mysql:host=127.0.0.1;dbname=' . $db_name, $db_user, $db_pass);
$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$loader = new Autoloader();
$loader->addNamespace('App', __DIR__ . '/../App');
$loader->register();
$container = new Container();
$container->bindArguments('App\\Model\\User',   ['dbh' => $dbh]);
$container->bindArguments('App\\Model\\Image',  ['dbh' => $dbh]);
/**************
*   ROUTING   *
**************/
$router = new Router();
$router->addRoute('GET', '/',               ['App\\Controller\\SessionController', "redirect"   ]);
$router->addRoute('GET', '/log_in',         ['App\\Controller\\SessionController', "newSession" ]);
$router->addRoute('GET', '/log_out',        ['App\\Controller\\SessionController', "destroy"    ]);
$router->addRoute('GET', '/sign_up',        ['App\\Controller\\UserController',    "signUp"     ]);
$router->addRoute('GET', '/edit_user',      ['App\\Controller\\UserController',    "edit"       ]);
$router->addRoute('GET', '/account',        ['App\\Controller\\UserController',    "account"    ]);
$router->addRoute('GET', '/users' ,         ['App\\Controller\\UserController',    "users"      ]);
$router->addRoute('GET', '/upload',         ['App\\Controller\\ImageController',   "upload"     ]);
$router->addRoute('GET', '/gallery',        ['App\\Controller\\ImageController',   "gallery"    ]);
$router->addRoute('POST', '/log_in',        ['App\\Controller\\SessionController', "create"     ]);
$router->addRoute('POST', '/sign_up',       ['App\\Controller\\UserController',    "create"     ]);
$router->addRoute('POST', '/delete_user',   ['App\\Controller\\UserController',    "destroy"    ]);
$router->addRoute('POST', '/edit_user',     ['App\\Controller\\UserController',    "update"     ]);
$router->addRoute('POST', '/upload',        ['App\\Controller\\ImageController',   "save"       ]);
$router->addRoute('POST', '/delete_image',  ['App\\Controller\\ImageController',   "destroy"    ]);
// Convert i.e. "/foo%40bar?id=1" to "/foo@bar"
$uri = rawurldecode(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH));
$route = $router->match($_SERVER['REQUEST_METHOD'], $uri);
if ($route === null) {
    $route = [
    'handle' => ['App\\Controller\\ErrorController', 'error404'],
    'arguments' => []
    ];
}
$controller = $container->create($route['handle'][0]);
$container->call([$controller, $route['handle'][1]], $route['arguments']);