You are using routes that don't change the url, only routes the URL to a specific controller, when you do:
$route['add-quiz'] = 'main/add_quiz/';
The only thing you are doing is telling CI to direct the url: "add_quiz" to the controller "add-quiz" (instead of "add_quiz").
To make it work, you need to add a line in .htaccess, like:
RewriteRule /main/add-quiz /main/add_quiz [L]
Resulting in something like:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L] #remove index.php
RewriteRule /main/add-quiz /main/add_quiz [L]
</IfModule>
Then, all requests to 'main/add_quiz
' will be changed to 'main/add-quiz
'. If your controller is called: 'add_quiz
' you should preserve your route.php.
Maybe you should adapt the .htaccess file to your local/remote project with some change to make it work.
Hope it helps!