Solution: Switching to rewrite rules, removing index.php from URLs and redirecting old requests

About

You will need some mod_rewrite rules set up in Apache. Generally, these should be added to the VirtualHost configuration.

Example

A basic set looks like this:

RewriteRule ^/var/storage/.* $0 [L] 
RewriteRule ^/var/[^/]+/storage/.* $0 [L] 
RewriteRule ^/design/[^/]+/(stylesheets|images|javascripts?)/.* $0 [L] 
RewriteRule ^/share/icons/.* $0 [L] 
RewriteRule ^/extension/[^/]+/design/[^/]+/(stylesheets|images|javascripts?)/.* $0 [L] 
RewriteRule .* /index.php

(Taken from Jan Borsodi's comment here)

Secondly, you will probably need to add the ForceVirtualHost setting in settings/override/site.ini.append.php. eZ can allegedly detect when it is installed in a virtual host setup, but it's not always correct.

[SiteAccessSettings]
ForceVirtualHost=true

Reference