GeoIP вообще не определяет, что вы ищите. Это определяет Яндекс, если в вашем запросе присутствует название города. А если название города в запросе не присутствует, то при заходе через впн вам Яндекс всё равно никогда не выдаст сайт из Ярославля.
А вот чтоб Яндекс узнал, что у вас есть сайт для Ярославля и нужен GeoIP, который будет подставлять название города в разные места на сайте.
То есть, стандартная схема такая: создаётся мультимагазин с региональными поддоменами и через модуль GeoIP на каждом поддомене выводится название города и другая информация по этому поддомену. Яндекс индексирует эти поддомены (плюс, они добавляются в Вебмастере как региональные зеркала) и затем при запросах из этого региона, либо при запросах с упоминанием названия города Яндекс выдаёт именно поддомен созданный под этот регион.
В моей схеме модуль GeoIP нужен для привязки поддоменов к городам и вывода "геосообщений" (текстов, которые зависят от города).
Яндекс проиндексировал страницу, где было название города. Соответственно, при запросах, где указан этот город, он и выдаёт именно эту страницу.
Это не сайт подстраивается под запросы - это выдача подстраивается под них и выдаёт соответствующие сайты.
То есть, у вас должна быть версия сайта под каждый город, который вас интересует и при запросе Яндекс выберет версию именно с тем городом, который в запросе.
Вот для создания этих версий и нужен GeoIP (как самый простой способ это сделать).