Здравствуйте!
На сайте реализован механизм автовыбора города. Все запросы происходят через index.php, с подключением необходимых файлов, т.е. реализован механизм фреймворка.
В адресной строке город показывается след образом (например, город Москва): http://site.ru/moskva
При посещении сайта посетителем происходит автовыбор города следующим образом:
1) проверяется существование куки с названием города (заходил ли посетитель уже или нет);
2) если существует куки (посетитель ранее заходил) и:
- пользователь ввел адрес сайта без названия города, т.е. просто http://site.ru, то берется название города из куки и происходит редирект с добавлением в адресной строке названия города, т.е. http://site.ru/moskva
- пользователь указал название города в адресной строке, например, ввел http://site.ru/moskva, и куки не совпадает с уже установленным куки, то происходит поиск и проверка в БД названия города, если такой город есть, то происходит редирект с на этот город, т.е. аналогично http://site.ru/moskva, если такого города не сущесвует, то происходит ошибка 404;
3) если куки не существует, то:
а) если есть значение города в адресной строке, то:
- проверка на существование введенного города:
- если город введен верно, то редирект и установка куки, т.е. http://site.ru/moskva
- если город введен неверно, то срабатывает механизм выбора города в зависимости от ip (все интервалы ip а также привязанные к ip города хранятся в БД, взятой из http://ipgeobase.ru/cgi-bin/Archive.cgi), происходит редирект и установка куки на автоматически выбранный город
б) если значение города нет в адресной строке, срабатывает также механизм выбора города в зависимости от ip, происходит редирект и установка куки на автоматически выбранный город
Также существует ручная смена города, и работает примерно аналогичным способом, описанным выше (т.е. опять же редирект при выборе города).
Если говорить в общем, то получается, что при любом заходе на сайт происходит редирект с добавлением города в адресной строке и установкой (или переустановкой) куки. Механизм работает, ip определяется, город меняется, всё вроде бы хорошо.
Теперь, если посмотреть на ответ от сервера, то выходит ошибка 302 (ресурс временно перемещен). Недавно я выяснил, что этот ответ и сплошной редирект ужасно сказывается на оптимизации (ведь верно?), т.е. к примеру, роботам яндекса, да и гугла непонятно что на сайте реализована мультирегиональность. Вот здесь http://help.yandex.ru/webmaster/?id=1108952 показано как для робота Яндекса необходимо правильно указывать мультирегиональность для сайта.
Наконец, вопросы:
1) Как правильно технически (без 302 ошибки, которая возникает из-за редиректа, но как сделать без него?) и правильно по SEO (чтобы показывались результаты поиска у нужного региона, например, нахожусь в Москве, ввожу поисковой запрос и получаю результаты относящиеся к Москве и с адресом http://site.ru/moskva) реализовать механизм автовыбора города?
2) Какие вообще существует механизмы/готовые решения выбора города в зависимости от ip пользователя?