The reason why you are receiving the `SiteContext` as **micrositemain** is because `url.Host` will return `microsite.mysite.com`.

Please see updated `SiteDefinition` below:

    name="micrositemainone"
    hostName="microsite.mysite.com" 
    virtualFolder="/{language_here}/company1" //ex: /en/company1
    startItem="/en/Home"
    physicalFolder="/{language_here}/company1" 
    rootPath="/sitecore/content/Site/Microsites/company1" 
    SiteSettingsNode="/sitecore/content/Site/Microsites/company1/Site Settings"
    
    name="micrositemain" 
    hostName="microsite.mysite.com" 
    virtualFolder="/"  
    startItem="/Home"
    physicalFolder="/" 
    rootPath="/sitecore/content/Site/Microsite/Main"  
    SiteSettingsNode="/sitecore/content/Site/Microsites/Main/Site Settings"

**UPDATE**

I have tested the above locally and saw that you need to update the setting `Languages.AlwaysStripLanguage` to `false` and add the above changes to the `SiteDefinition.config`.

Based on your question updates, I would suggest to manage it through the code, which is, option 2. The reason because you will have more control of it.