As per commented by Chris, This is the correct answer.
https://stackoverflow.com/questions/9378122/accessing-sitecore-content-with-virtual-folders

We need to mention physical folder same as virtual folder. Patch before attribute is very important here.

Add below attributes in our abc.xyz.com website settings

        <site name="abc.xyz.com" patch:before="site[@name='xyz.com']" 
        virtualFolder="/abc" physicalFolder="/abc"
        targetHostName="xyz.com" 
    
    ....
    >
https://sdn.sitecore.net/Articles/Administration/Configuring%20Multiple%20Sites/Adding%20New%20Site/site%20Attribute%20Properties/virtualFolder.aspx