Hello @kartik,
 your directory path is wrong. You need /public on the end because Laravel treats that directory as the web root. Try this:
<directory /var/www/mydomain.com/public>
    DirectoryIndex index.php
    AllowOverride ALL
</directory>
But the better solution is to put the contents of the .htaccess file in your virtual host. Like this:
<VirtualHost *:80>
    DocumentRoot "/var/www/mydomain.com/public"
    ServerName mydomain.com
    ServerAlias *.mydomain.com
    <Directory "/var/www/mydomain.com/public">
        # Ignore the .htaccess file in this directory
        AllowOverride None
        # Make pretty URLs
        <IfModule mod_rewrite.c>
            <IfModule mod_negotiation.c>
                Options -MultiViews
            </IfModule>
            RewriteEngine On
            # Redirect Trailing Slashes...
            RewriteRule ^(.*)/$ /$1 [L,R=301]
            # Handle Front Controller...
            RewriteCond %{REQUEST_FILENAME} !-d
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteRule ^ index.php [L]
        </IfModule>
    </Directory>
</VirtualHost>
Also, you should make sure your config file is loaded by running:
apache2ctl -t -D DUMP_VHOSTS
This will print a list of all the loaded vhosts. If yours isn't in that list then make sure it is enabled by running:
a2ensite [name_of_your_config_file]
Then restart apache with:
service apache2 reload
Hope it helps!!