Вот кстатии статья на хабре возможно вам поможет. Там правда для nginx инструкция но в каментах можно найти и про соответствующую настройку apache. Если все получится поделитесь практическим решением, думаю для многих это будет полезным..
Настраивал на хостинге, где стоит CPanel и доступа к настройкам сервера нет.
Для решения моей проблемы выполнял следующее:
1) Создать поддомен *.site.ru и указать путь к основному site.ru
2) В редакторе DNS необходимо добавить A правило *.site.ru и указать адрес основного домена.
В общем-то и все, теперь по любому поддомену *.site.ru открывается основной сайт по данному домену. Дальше просто вытягивать значение * из HTTP_HOST и применять его значение для того, что требуется.
Так как у меня довольно простые задачи, то мне этого достаточно, но если необходимо перенаправление в каталог по именни поддомена, то в статье хабра есть данный вариант в комментариях.
После всех манипуляций можно зайти в том числе по адресу asdasdfasdfads.site.ru, решение в лоб - сравнивать допустимые варианты и если он не подходит, то перебрасывать на дефолтный адрес, возможно кто-то знает как сделать лучше, буду рад узнать другие варианты.
Как вариант. В таком случае даже не придется что то прописывать в PHP коде шаблона. Минус что для каждого города надо создавать отдельный материал. Можно также использовать отдельный параметр в запросе как я выше написал и обрабатывать его уже средствами PHP.
Минус довольно большой в зависимости от требуемых вариантов, особенно, если в статье будет одно единственное изменение вида: "Это Краснодарский край"/"Это Ярославская область" и т.п. Для решения такой проблемы я использовал плагин sourcerer, он позволяет вставлять php код прямо в материал. Тогда просто остается обработать регион и взять подготовленный вариант(я использовал ini файлы).
Буду рад любой помощи и советам как еще можно упростить данную задачу.